一、冒泡排序
二、直接插入排序
三、秩的排序
四、选择排序
五、希尔排序
六、快排
七、堆排序
八、归并排序
九、计数基数排序
一、冒泡排序
package com.java.sort;
import com.java.util.MyMath;
public class BubbleSort {
public static void bublleSort(int[] a ){
boolean swapped;
for (int i=a.length;i>=0;i--){
swapped = false;
for (int j = 0; j <i-1 ; j++) {
if (a[j]>a[j+1]){
MyMath.swap(a,j,j+1);
swapped=true;
}
}
if (!swapped)break;
}
}
}
二、直接插入排序
package com.java.sort;
public class InsertSort {
public static void insertSort(int[] a){
for (int i = 1; i <a.length ; i++) {
int temp=a[i];
/* //第一种写法
for ( int j= i-1; j >=0 ; j--) {
if (temp<a[j]){
a[j+1]=a[j];
} else{
a[j+1] =temp;
break;
}
}*/
//第二种写法
int j;
for ( j= i-1; j >=0&&temp<a[j] ; j--) {
a[j+1]=a[j];
}
a[j+1] =temp;
}
}
}
三、秩的排序
package com.java.sort;
import com.java.util.MyMath;
import java.util.Arrays;
public class Rank {
public static void rank(int[] a ,int[] r){
Arrays.fill(r,0);
for (int i = 0; i <a.length ; i++) {
for (int j = 0; j <i ; j++) {
if(a[j]<=(a[i]))r[i]++;
else r[j]++;
}
}
}
public static void rank_sort(int[] a,int[] r){
for (int i = 0; i <a.length ; i++) {
while(r[i]!=i){
int temp_index = r[i];
MyMath.swap(a,temp_index,i);
MyMath.swap(r,temp_index,i);
}
}
}
public static void rank_sort_method(int[]a ,int[] r){
rank(a,r);
rank_sort(a,r);
}
}
四、选择排序
package com.java.sort;
import com.java.util.MyMath;
public class SelectionSort {
public static void selectionSort(int[] a){
int max_index=0;
for (int i = a.length; i >1 ; i--) {
max_index = My