初识算法,甚是脑大!初识排序,甚是苦恼!不过真要铁 了心,好好的看下去,想一想这些排序并无那么困难!算法
经过网上的学习和本身的理解,想对插入排序算法作一些总结,以加深对算法的理解。数组
直接插入排序(Insertion Sort)的思想是:学习
每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到所有记录插入完成为止。spa
基本思想:假设有数组a[] 有n个元素,随机抽取第一个 a[1] 做为有序区的元素,则把 [2 --- n-1] 的元素,依次插入到 有序区,code
最后生成含n个记录的有序区。blog
代码解析:排序
/* 时间复杂度最慢:O(n*n);若是都是正序的话,时间复杂度:O(n); * 思想:n个元素,抽一个 做为有序区,剩下的元素要插入n-1 次,没一次插入 须要 从右向左依次比较。 */ public static void insetSort(int a[]){ int j ; int temp; for(int i=1;i<a.length;i++){ //抽出一个元素后,余下须要 插入比较 n-1次, j = i; temp = a[i]; //建立一个 临时变量,用于存放将要插入的 元素。 while(j > 0 && temp <a[j-1]){ // 当j = 0 时,一次 插入结束 a[j] = a[j-1]; j--; } a[j] = temp; //将 temp放到 排序好的左边位置上, } }