Java算法之直接插入排序

来源:互联网 发布:数据切片和切块 编辑:程序博客网 时间:2024/05/22 02:27

举例:要排序的数组  int[] arr={7,9,8,4,5,1,6,3,2,0};

从小到大排列:

/*直接插入排序*/public class DirectInsertionSort {public static void main(String[] args){int[] arr={7,9,8,4,5,1,6,3,2,0};for(int i=1;i<arr.length;i++){//第0位独自作为有序数列,从第1位开始向后遍历if(arr[i]<arr[i-1]){//0~i-1位为有序,若第i位小于i-1位,继续寻位并插入,否则认为0~i位也是有序的int temp=arr[i];//保存第i位的值int k=i-1;for(int j=k;j>=0&&temp<arr[j];j--){//从第i-1位向前遍历并移位,直至找到小于第i位值停止arr[j+1]=arr[j];k--;}arr[k+1]=temp;//插入第i位的值}}for(int b=0;b<arr.length;b++){//输出    System.out.println(arr[b]);}}}
运行结果:

0123456789

基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

阅读全文
0 0