输入:
n个数字组成的无序序列
输出:
输入序列的一个排列,该排列满足某种要求。
算法原理分析:
从一个未排序的序列中,依次选出符合条件的元素(比如最小,最大)插入到一个新的空序列中,直到原来的序列中带插入元素数量为0。此时新的序列为有序序列。
在实际的算法中,很少创建新的序列,而是在比较之后,通过交换元素,把元素交换到待排序的序列的前端或后端或者某个指定位置。不断重复这个过程,最终使原来的无序序列变为有序序列。
图解原理:
![](https://img.haomeiwen.com/i8754200/fac89f854d061464.png)
源代码(Javascript实现):
var a = [7,9,95,8,11,54569,236,4124,32,8,9,55,42,16,30,25,31,5,48,32,584,656,321,458,21,559,55,884,2,84,3,3,4,84,8];
var b = [7,9,95,8,11,54569,236,4124,32,8,9,55,42,16,30,25,31,5,48,32,584,656,321,458,21,559,55,884,2,84,3,3,4,84,8];
//升序排列 //降序排列
for(var j = 1; j < a.length; j++){ for(var j = 1; j < a.length; j++){
var i = j-1; var i = j-1;
for( i ;i >0 || i == 0; i--){ for(i;i >0 || i == 0; i--){
if(a[i + 1] < a[i]){ if(b[i + 1] > b[i]){
var t = a[i+1]; var t = b[i+1];
a[i+1] = a[i]; b[i+1] = b[i];
a[i] = t; b[i] = t;
} }
} }
} }
网友评论