排序算法:插入排序、希尔排序、冒泡、快速排序、选择排序、堆排序以及归并和基数排序
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 由于博客迁移至 www.coderyi.com ,文章请看 http://www.coderyi.com/archives/412 排序分为内部排序和外部排序,内部排序指待排序的记录在内存中,外部排序的记录数量很大,以至于内存放不下而放在外存中,排序过程需要访问外存。这里仅介绍内部排序,包括插入排序、交换排序、选择排序、归并排序、基数排序。 1 插入排序 1.1直接插入(straight insertion sort) 算法思路:数组{k1,k2,……,kn},排序一开始k1是一个有序序列,让k2插入得到一个表长为2的有序序列,依此类推,最后让kn插入上述表长为n-1的有序序列,得到表长为n的有序序列。 c实现的代码: // 从小到大排序 int a[]={98,97,34,345,33}; int k=sizeof(a)/sizeof(a[0]); int j; for (int i=1; i<k; i++) { int temp=a[i]; for (j=i-1; j>=0&&a[j]>temp; j--) { a[j+1]=a[j]; } a[j+1]=temp; } 1.2折半插入(binary insertion sort) 算法思路:当直接插入进行到某一趟时,对于r[i]来讲,前面i