一.什么叫直接插入排序法?
所谓插入排序法,就是检查第i个数字,如果在它的左边的数字比它大,进行交换,这个动作一直继续下去,直到这个数字的左边数字比它还要小,就可以停止了。
二.排序步骤:
对下列数组进行排序:(22,36,4,51,36,8,44,5,62,14,5,6,32,12)
1.)分别定义数组和变量
int arr[]={22,36,4,51,36,8,44,5,62,14,5,6,32,12};
int min;
int h;
2.)排序实现:
1.单层for 循环对比相邻的两个数如果后面的数小于前面的数将后面数的值送给变量min中
2. 并讲后面较小值的下标保存到h中
for (int i = 1; i <arr.length ; i++) {
if(arr[i]<arr[i-1]){
min=arr[i];
h=i;//将当前较小的值的坐标赋给h
//此处还需将值插入到前面适当的位置
}
}
3.用while 循环判断出min中的值应该插入在前面值的何处
while(h>0 && arr[h-1]>min){
arr[h]=arr[h-1];
h--;
}
arr[h]=min;
三.完整程序:
/**直接插入排序法
* Created by pc on 17-4-2.
*/
public class Insertion_sort {
public static void Insertion(int[] arr){
int min;
int h;
for (int i = 1; i <arr.length ; i++) {
if(arr[i]<arr[i-1]){
min=arr[i];
h=i;//将当前较小的值的坐标赋给h
while(h>0 && arr[h-1]>min){
arr[h]=arr[h-1];
h--;
}
arr[h]=min;
}
}
for (int aa:arr) {
System.out.print(aa+" ");
}
}
public static void main(String[] args) {
int arr[]={22,36,4,51,36,8,44,5,62,14,5,6,32,12};
Insertion(arr);
}
}
结果展示:
排序算法文集:排序算法总结