【算法】冒泡排序与选择排序的递归实现
2013-05-19 15:09
375 查看
1 冒泡排序
2 选择排序
1 冒泡排序: void bubbleSort(int *data,int start,int end) { if (start < end) { int temp = 0; int length = end - start + 1; for (int i = start; i < length - 1; i ++) { if (data[i] < data[i + 1]) { temp = data[i]; data[i] = data[i + 1]; data[i + 1] = temp; } } end --; bubbleSort(data,start,end); } } 注意问题:end--那里,注意每次递归的起始终止下标的移动,起始下标不变,终止下标每次减1, 循环结束条件 为start == end,以及i < length - 1;
2 选择排序
void selectionSort(int *data,int start,int end) { if (start < end) { //int length = end - start + 1; int temp = data[start]; int index = start; for (int i = start + 1; i < end + 1; i ++) { if (data[index] > data[i]) { index = i; } } for (int i = 0; i < 10; i ++) { printf("%d ",data[i]); } printf("\n"); if (start != index) { temp = data[start]; data[start] = data[index]; data[index] = temp; } start ++; selectionSort(data, start, end); } } 注意问题:start ++那里,注意每次递归的起始终止下标的移动,起始每次加1,终止下标不变, 循环结束条件 为start == end,以及i < end + 1
相关文章推荐
- 下标注意【算法】冒泡排序与选择排序的递归实现
- 快速排序,冒泡排序,直接选择排序的算法实现
- 数据结构与算法——三种基础排序算法C#实现(冒泡排序、选择排序、插入排序)
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 插入排序,选择排序,递归排序和冒泡排序的实现
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 算法 -- iOS开发用Objective_C / Swift3.0实现:快速排序 / 冒泡排序 / 选择排序
- 我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
- 笔试算法题(56):快速排序实现之非递归实现,最小k值选择(non-recursive version, Minimal Kth Selection of Quick Sort)
- 内部排序冒泡排序、插入排序、选择排序、快速排序的算法和PHP实现
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- 冒泡排序、选择排序、插入排序 算法实现
- 【数据结构与算法】【排序】冒泡排序的代码实现