排序分为内部排序和外部排序。
内部排序即在内存中进行排序
外部排序即需借助外部存储进行排序。
简单插入排序:
该排序算法是假定一组无序序列中的第一个元素为有序的
然后依次将后面的元素插入到这个有序序列中合适的位置。
例: 将{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;
}
}
}
上述排序过程可见插入排序效率很低