插入排序法通过对未排序的数据执行诸葛插入至合适的位置而完成排序工作。
首先看看思路,通过比较和插入来实现排序,其排序流程如下:
(1)首先对数组的前两个数据进行从小到大的排序。
(2)接着将第3个数据与排好序的两个数据比较,将第3个数据插入到合适的位置。
(4)不断的重复上述过程,知道把最后一个数据插入合适的位置。最后,编完成了对原始数组从小到大的排序。
eg:
void insertionSort(int[]a){
int i,j,t,h;
for(i=1;i<a.length;i++){
t=a[i];
j=i-1;
while(j>=0&&t<a[j]){
a[j+1]=a[j];
j--;
}
a[j+1]=t;
System.out.print(i);//输出每步结果
for(h=0;h<a.length;h++){
System.out.print(""+a[h]);
}
Syetem.out.print("\n");
}
}
shell排序法
shell排序算法啊严格来说基于排序思想,其又称为希尔排序或者缩小增量排序,shell排序算法流程如下:
(1)将有n个元素的数组分成n/2个梳理,第1个数据和第n/2+1个数据为一对……
(2)一次循环使每个序列对排好顺序。
(3)然后,再变为n/4个序列,再次排序。
(4)不断的重复尚需过程,随着序列减少最后变为一个,也就完成了整个排序。
算法如下:
eg:
void shellSort(int[]a){
int i,j,h;
int r,temp;
int x=0;
for(r=a.length/2;r>=1;r/=2){
for(i=r;i<a.length;i++){
temp=a[i];
j=i-r;
while(j>=0&&temp<a[j]){
a[j+r]=a[j];
j-=r;
}
a[j+r]=temp;
}
x++;
Systemp.out.print(x);
for(h=0;h<a.length;h++){
System.out.print(""+a[h]);
}
}
}