排序算法之插入排序

来源:互联网 发布:linux dd 克隆系统 编辑:程序博客网 时间:2024/05/21 15:45

排序分为内部排序和外部排序。

内部排序即在内存中进行排序

外部排序即需借助外部存储进行排序。

 

简单插入排序:

   该排序算法是假定一组无序序列中的第一个元素为有序的

   然后依次将后面的元素插入到这个有序序列中合适的位置。

 例: 将{8,7,6,5,4,3,2,1}从小到大排序

  排序过程为

第一趟

第一次:7,8,6,5,4,3,2,1

第二趟

第一次:6,8,7,5,4,3,2,1 第二次:6,7,8,5,4,3,2,1

第三趟

第一次:5,7,8,6,4,3,2,1 第二次:5,6,8,7,4,3,2,1 第三次:5,6,7,8,4,3,2,1

第四趟

第一次:4,6,7,8,5,3,2,1 第二次:4,5,7,8,6,3,2,1 第三次:4,5,6,8,7,3,2,1第四次:4,5,6,7,8,3,2,1

第五趟

第一次:3,5,6,7,8,4,2,1第二次:3,4,6,7,8,5,2,1 第三次:3,4,5,7,8,6,2,1第四次:3,4,5,6,8,7,2,1,第五次:3,4,5,6,7,8,2,1

第六趟

第一次:2,4,5,6,7,8,3,1第二次:2,3,5,6,7,8,4,1第三次:2,3,4,6,7,8,5,1第四次:2,3,4,5,7,8,6,1第五次2,3,4,5,6,8,7,1第六次:2,3,4,5,6,7,8,1

第七趟

第一次:1,3,4,5,6,7,8,2第二次:1,2,4,5,6,7,8,3第三次:1,,2,3,5,6,7,8,4第四次:1,2,3,4,6,7,8,5第五次:1,2,3,4,5,7,8,6第六次:1,2,3,4,5,6,8,7第七次1,2,3,4,5,6,7,8

 代码实现:

for(int i=1;i<n;i++){     for(int j=0;j<i;j++){       if(a[i]<a[j]){         int temp = a[i];         a[i] = a[j];         a[j]=temp;       }     }}

上述排序过程可见插入排序效率很低

 

0 0
原创粉丝点击