插入排序

来源:互联网 发布:安装ubuntu到u盘 编辑:程序博客网 时间:2024/04/27 20:49

最近在开数据结构与算法,把看到的总结一下,参考资料算法导论。现在是最简单的插入排序:

public static function InstertSort(p_list:Array):void{var a:Array = p_list;var key:Number;var i:int;//迭代for(var j:int = 1; j<a.length; j++){key = a[j];//标记i = j-1;//当对比的值比目标值大时需要执行排序,因为左边都是排好序的,所以当出现条件不符的时候,不需要继续往下对比while(i>=0 && a[i]>key){a[i+1] = a[i];//对比值比目标值大,对比值需要往后移一位i--;//在比较下一个看是否需要移位}// 比较完成之后置换a[i+1] a[j] 因为假如执行过排序,那么a[i+1]已经被移位了if(i != j-1){a[i+1] = key;}}}


插入算法需要注意的是,肯定有一边是排好序的,你只需要比较一下,目标值和要对比的值谁大,一直比到比目标值小的那个值为止,这时循环就可以中断了,然后,既然它要插进去,那么后面的值都要移位,给它腾位置。

//-------------------------------------------------------------------------------------------

结果:

输入:1,3,20,45,78,6,4,76,9,12,54
输出:1,3,4,6,9,12,20,45,54,76,78


原创粉丝点击