Skip to content

Commit 3aca13c

Browse files
authored
Add files via upload
1 parent ae11d08 commit 3aca13c

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed

Quicksort1.java

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
import java.util.Random;
2+
3+
import java.util.Scanner;
4+
5+
/**
6+
*
7+
* @author ELCOT
8+
*/
9+
public class Quicksort1
10+
{
11+
12+
private int[] a;
13+
14+
void input ()
15+
{
16+
17+
Scanner sc = new Scanner (System.in);
18+
19+
Random rm = new Random ();
20+
21+
System.out.print ("Enter the total numbers: ");
22+
23+
int n = sc.nextInt ();
24+
25+
a = new int[n];
26+
27+
for (int i = 0; i < n; i++)
28+
{
29+
30+
a[i] = rm.nextInt (1000); // Generates random numbers 0-999
31+
}
32+
}
33+
void display ()
34+
{
35+
36+
for (int i:a)
37+
38+
{
39+
40+
System.out.print (i + " ");
41+
42+
}
43+
}
44+
void sort ()
45+
{
46+
47+
quicksort (0, a.length - 1);
48+
49+
}
50+
void quicksort (int left, int right)
51+
{
52+
53+
if (left < right)
54+
55+
{
56+
57+
int s = partition (left, right);
58+
59+
quicksort (left, s - 1);
60+
61+
quicksort (s + 1, right);
62+
63+
}
64+
65+
}
66+
int partition (int left, int right)
67+
{
68+
69+
int pivot = a[left];
70+
71+
int i = left;
72+
73+
int j = right + 1;
74+
75+
do
76+
77+
{
78+
79+
do
80+
81+
{
82+
83+
++i;
84+
85+
}
86+
while (i < right && a[i] < pivot);
87+
88+
do
89+
90+
{
91+
92+
--j;
93+
94+
}
95+
while (a[j] > pivot);
96+
97+
swap (i, j);
98+
99+
}
100+
while (i < j);
101+
102+
swap (i, j); // undo last swap
103+
swap (left, j);
104+
105+
return j;
106+
107+
}
108+
109+
private void swap (int i, int j)
110+
{
111+
112+
int temp = a[i];
113+
114+
a[i] = a[j];
115+
116+
a[j] = temp;
117+
118+
}
119+
public static void main (String args[])
120+
{
121+
122+
Quicksort1 sorter = new Quicksort1 ();
123+
124+
sorter.input ();
125+
126+
System.out.println ("Array before sorting");
127+
128+
sorter.display ();
129+
130+
long startTime = System.nanoTime ();
131+
132+
sorter.sort ();
133+
134+
long endTime = System.nanoTime ();
135+
136+
double duration = (endTime - startTime) / 1000000.00;
137+
138+
//divide by 1000000 to get milliseconds.
139+
System.out.println ("\nArray After sorting");
140+
141+
sorter.display ();
142+
143+
System.out.println ("\nTime for sorting is " + duration +
144+
" milli seconds");
145+
146+
}
147+
}

0 commit comments

Comments
 (0)