【算法】插入排序的递归实现
2013-05-19 15:07
716 查看
int data[10] = {5,4,3,6,7,8,56,3,234,2}; //输入元素为: data需要排序的数组 start需要排序的数组的起始下标 end需要排序的,无序序列的首元素的下标。 length数组的长度。 开始时 start = 0;end = 1,因为只有0是有序的,后面9个无序的里面下标1是首元素。 调用方式为: insertationSort(data,0,1,10); 通过不断递归 第二次调用 insertationSort(data,0,2,10); 第三次调用 insertationSort(data,0,3,10); . . . 直到 insertationSort(data,0,9,10); 比如 void insertationSort(int *data,int start,int end,int length) { if (end <= length) { int index = end; int temp = 0; //查找最后一个元素应该插入到哪个位置,找到则退出循环 for (int i = start; i < end; i ++) { if (data[end] < data[i]) { index = i; temp = data[end]; break; } } //如果找到指定位置了,则指定位置元素开始集体向后挪动一个单位,否则不变 if (index != end) { data[index] = temp; for (int i = end - 1; i >= index; i --) { data[i + 1] = data[i]; } } end ++; insertationSort(data, start, end, length); } }
相关文章推荐
- 插入排序的递归实现和二分查找递归实现,算法导论2.3-4和2.3-5
- 元素位置【算法】插入排序的递归实现
- 白话经典算法系列之——直接插入排序的三种实现
- 白话经典算法系列之二 直接插入排序的三种实现
- 直接插入排序的算法思想和实现过程
- 白话经典算法系列之二 直接插入排序的三种实现
- 白话经典算法系列之二 直接插入排序的三种实现
- 经典算法之直接插入排序(三种实现)
- [算法入门]快速排序非递归方法(Java实现),大家一起来找茬啊~
- 白话经典算法系列之二 直接插入排序的三种实现
- 【经典算法】:插入排序的实现,通过交换,与众不同!
- C#插入排序算法实现
- C#插入排序☞递归实现
- 白话经典算法系列之二 直接插入排序的三种实现
- 算法系列(三)插入排序的两种改进:规避边界检测和取消交换(Java实现)
- 白话经典算法系列之二 直接插入排序的三种实现
- 【算法】冒泡排序与选择排序的递归实现
- 插入排序的递归实现(java版)
- 插入排序算法---java 实现
- C#插入排序算法实现