1 直接插入排序
假设一列数中的前n-1个数都是排好序的,然后把第n个数插入其中,
直到所有的数都排好序。
public class InsertSort{
public static void insersort(){
int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,
34,15,35,25,53,51};
int temp=0;
//从第二个数开始遍历
for(int i=1;i=0&&a[j]>temp;j--){
a[j+1] = a[j];
}
a[j+1] = temp;
}
for(int j=0;j
2 希尔排序
也叫递减增量排序,是非稳定的排序算法,取一个正整数d1,
每相隔d1就取一个数合并为一组,然后对组内进行插入排序
public class ShellSort{
public static void shelllsort(){
int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,
34,15,35,25,53,51};
//获取数列长度
double d1 = a.length;
//将数列二分
while(true){
d1 = Math.ceil(d1/2);
int d = (int)d1;
//对0到d内的所有数以间隔d进行排序
for(int i=0;i=0&&a[p]>temp;p-=d){
a[p+d] = a[p];
}
a[p+d] = temp;
}
}
if(d == 1){
break;
}
}
for(int i =0;i
3 简单选择排序
在要排序的一组数中,选出最小的一个数与第一个数替换,然后选择剩下最小的一个数与第二个数替换,直到所有数都排好序
public class SelectSort{
public static void selectSort(){
int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,
34,15,35,25,53,51};
for(int i=0;i