摘要: 希尔排序,主要就是通过一个步长来分割数组,如何步长是5,那么整个数组将分成5组。分组之后用插入排序。 1 void xier(int *array, int len) 2 { 3 int gap = len; 4 5 while(gap > 1) 6 { //用除以3+1的方式据说是某位大牛算出来的 阅读全文
posted @ 2020-03-31 16:01 撑雨伞的小男孩 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 插入排序是一个找坑填坑的过程。 把一个数组分成两个数组来看。前面一个有序数组(刚开始只有一个元素),后面一个无序数组。在无序数组后定义一个坑index,取出当前值。跟前面的对比(假设从小到大排列),如果比面的一个值小,则将这个坑往前移。 外层循环是有序序列。从第一个开始。内存循环是无序序列,从有序序 阅读全文
posted @ 2020-03-31 15:55 撑雨伞的小男孩 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 其实旋转排序跟冒泡有点类似,只不过他不是每一步都进行对比调换。而是返回一个标签,在最后与进行调换。 1 void paixu(int *array, int len) 2 { 3 int min = 0; 4 for(int i = 0; i < len -1; i++) 5 { 6 min = i 阅读全文
posted @ 2020-03-31 15:49 撑雨伞的小男孩 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 冒泡,相对还好理解。从第一个开始,跟后面的对比,比大小来确定是否需要交换位置,慢慢往上冒。外层循环是需要比较的数值的个数(第一个开始哈)。如果说从小到大排,则一个个大的数就往后冒。 内存循环是除掉排好的数之后,剩下的个数。中间涉及到两个数的对比,所以是len - 排好的数i - 1. 1 void 阅读全文
posted @ 2020-03-31 15:47 撑雨伞的小男孩 阅读(94) 评论(0) 推荐(0) 编辑