package al;
import java.util.Arrays;
import java.util.Random;
public class Test {
public static void main(String[] args) {
Random r = new Random();
int[] a = new int[1024];
for(int i = 0;i < a.length ;i++) {
a[i] = r.nextInt(100);
}
System.out.println(Arrays.toString(a));
quickSort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
public static void bubbleSort(int a[] ) {
for(int i = 0;i < a.length - 1;i++) {
for(int j = 0;j < a.length -1 - i;j++) {
if(a[j] < a[j + 1]) {
swap(a,j,j+1);
}
}
}
}
public static void selectSort(int a[] ) {
for(int i = 0;i <a.length - 1;i++) {
int min = i;
for(int j = i + 1;j < a.length;j++) {
if(a[j] < a[min]) {
min = j;
}
}
swap(a,i,min);
}
}
public static void insertSort(int a[]) {
for(int i = 1;i < a.length;i++) {
int index = i;
int temp = a[i];
while(index > 0 && temp < a[index - 1]) {
a[index] = a[index - 1];
index--;
}
a[index] = temp;
}
}
public static void shellSort(int a[]) {
int d = 5;
while(d >= 1) {
for(int i = 0;i < a.length;i++) {
for(int j = i;j < a.length - d;j = j + d) {
if(a[j] > a[j + d]) {
int temp = a[j + d];
int index = j + d;
while(index - d >= 0 && a[index - d] > temp) {
a[index] = a[index -d];
index = index -d;
}
a[index] = temp;
}
}
}
d = d / 2;
}
}
public static void merge(int a[],int start,int end) {
if(start < end) {
int mid = (start + end) / 2;
merge(a,start,mid);
merge(a,mid + 1,end);
mergeSort(a,start,mid,end);
}
}
public static void mergeSort(int a[],int start,int mid,int end) {
int p1 = start,p2 = mid + 1;
int index = 0;
int temp[] = new int[end - start + 1];
while(p1 <= mid && p2 <= end){
if(a[p1] > a[p2]) {
temp[index++] = a[p2++];
}else {
temp[index++] = a[p1++];
}
}
while(p1 <= mid) {
temp[index++] = a[p1++];
}
while(p2 <= end) {
temp[index++] = a[p2++];
}
for(int i = 0;i < temp.length;i++) {
a[i + start] = temp[i];
}
}
public static void quickSort(int a[],int start,int end) {
if(start > end) {
return;
}
int pivot1 = start;
int pivot2 = end;
int tar = a[start];
while(pivot1 != pivot2) {
while(pivot2 > pivot1 && a[pivot2] >= tar) {
pivot2--;
}
while(pivot2 > pivot1 && a[pivot1] <= tar) {
pivot1++;
}
if(pivot2 > pivot1) {
swap(a,pivot1,pivot2);
}
}
a[start] = a[pivot1];
a[pivot1] = tar;
quickSort(a,start,pivot1 - 1);
quickSort(a,pivot1 + 1,end);
}
public static void swap(int a[],int i,int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}