public static void heap_sort(int[] arr) {
for(int i = arr.length /2 -1 ;i >= 0 ; i -- ) {
siftDown(arr, i, arr.length);
}
for (int i=arr.length - 1; i > 0; i--) {
swap(arr,0,i);
siftDown(arr, 0, i);
}
}
public static void siftDown(int[] arr, int i, int j) {
int parent=arr[i];
while (i < j/ 2) {
int child = (i << 1) + 1 ;
int temp=arr[child];
int right = child + 1 ;
if (child != j - 1 && temp < arr[right])
temp = arr[child =right] ;
if (temp < parent)
break;
arr[i] = temp ;
i = child ;
}
arr[i] = parent ;
}
public static void quickly_sort(List<Integer> list) {
if (list.size() > 1) {
List<Integer> smaller=new ArrayList<>();
List<Integer> same=new ArrayList<>();
List<Integer> larger=new ArrayList<>();
Integer center=list.get(list.size() / 2);
for (Integer i : list) {
if (i < center) {
smaller.add(i);
} else if (i > center) {
larger.add(i);
} else {
same.add(i);
}
}
quickly_sort(smaller);
quickly_sort(larger);
list.clear();
list.addAll(smaller);
list.addAll(same);
list.addAll(larger);
}
}
public static<T extends Object & Comparable<? super T>> void shell_sort( T[] arr) {
int inner ,outer ;
T temp ;
int h = 1;
while (h <= arr.length / 3) {
h = 3 * h + 1 ;
}
while (h > 0) {
for(outer = h ; outer < arr.length ; outer ++ ) {
temp = arr[outer];
inner = outer;
while (inner > h - 1 && arr[inner - h] .compareTo(temp)>= 0) {
arr[inner]=arr[inner - h];
inner -= h ;
}
arr[inner] = temp;
}
h = (h - 1) / 3;
}
}
public static<T extends Object & Comparable<? super T>> void bubble_Sort(T [] arr){
for(int i = 0 ; i < arr.length - 1; i ++ ) {
for(int j = 0 ; j < arr.length - 1 - i ; j ++) {
if (arr[j].compareTo(arr[j + 1]) > 0) {
swap( arr, j, j+1);
}
}
}
}
public static<T extends Object & Comparable<? super T>> void select_Sort(T [] arr){
for(int i = 0 ; i < arr.length - 1 ; i ++ ) {
for(int j = i + 1; j < arr.length ; j ++ ) {
if (arr[i].compareTo(arr[j]) > 0) {
swap(arr, j, i);
}
}
}
}
public static<T extends Object & Comparable<? super T>> void insert_Sort(T [] arr){
int i , j ;
for ( i = 1 ; i < arr.length ; i ++ ) {
T temp = arr [i];
j = i ;
while (j > 0 && arr[j - 1].compareTo(temp) >= 0) {
arr[j]=arr[j - 1];
--j;
}
arr[j] = temp;
}
}
public static <T extends Object & Comparable<? super T>>void print(T [] arr) {
for (T t : arr) {
System.out.print(t + " ");
}
}
public static <T extends Object & Comparable<? super T>> void swap(T[] arr, int i, int j) {
T temp =arr [i];
arr [i] = arr [j];
arr [j] = temp ;
}
public static void main(String[] args) {
Integer [] iArr={48,12, 25, 14, 1, 34, 28, 17 , 11};
insert_Sort(iArr);
print(iArr);
}