C数据结构-几种常见的排序:冒泡,选择,插入,希尔
来源:互联网 发布:史丹利的寓言 mac下载 编辑:程序博客网 时间:2024/06/05 19:03
几种常见的排序
实际开发中,我们最常见到最常使用的排序莫过于:冒泡排序、选择排序、插入排序和希尔排序。希尔排序其实就是一种特殊的插入排序。
#ifndef ALGORITHM_H#define ALGORITHM_H#define ARRAR_SIZEOF(a) ( sizeof((a)) / sizeof((a[0])) )/** * 直接选择排序 * @param arr 数组指针 * @param size 数组大小 */void select_sort(int arr[], int size){ int i,j,min,tmp; for(i = 0; (i < size -1) && flag; i ++) { min = i; for(j = i + 1; j < size; j++) { if(arr[min] > arr[j]) { min = j; } } /* 当最小值的下标min与i不相等时才需要交换位置,否则i位置就是最小的 */ if( i != min) { tmp = arr[min]; arr[min] = arr[i]; arr[i] = tmp; } }}/** * 冒泡排序 * @param arr 数组指针 * @param size 数组大小 */void bubble_sort(int arr[], int size){ int i,j,tmp,flag = 1; for(i = 0; (i < size - 1) && flag; i++ ) { flag = 0; for(j = 0;j < size - 1 - i; j++) { if(arr[j] > arr[j + 1]) { tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; flag = 1; } } }}/** * 直接插入排序 * @param arr * @param size */void insert_sort(int arr[], int size){ int i,j,tmp; for(i = 1; i < size; i++) { tmp = arr[i]; for(j = i - 1;j >= 0;j--) { if(tmp > arr[j]) break; arr[j + 1] = arr[j]; } arr[j + 1] = tmp; }}/** * 希尔排序 * @param arr * @param size */void shell_sort(int arr[], int size){ int i,j,tmp,gap = size; do { gap = gap / 3 + 1; for(i = gap; i < size; i += gap) { tmp = arr[i]; for(j = i - gap;j >= 0;j -= gap) { if(tmp > arr[j]) break; arr[j + gap] = arr[j]; } arr[j + gap] = tmp; } } while(gap > 1);}#endif // ALGORITHM
阅读全文
0 0
- C数据结构-几种常见的排序:冒泡,选择,插入,希尔
- 四种常用的排序(插入、选择、冒泡、希尔)
- 冒泡--选择--插入--希尔排序
- 数据结构排序,冒泡,快速,直接选择,直接插入,希尔
- 数据结构七:选择,冒泡,插入,希尔,快速排序实现
- 各种常见的排序,冒泡排序,选择排序,插入排序,希尔排序,堆排序,快速排序,基数排序,桶排序
- 八种常见排序算法:插入、冒泡、选择、希尔、归并、快排、堆排序、基数排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- Java之常见的几种排序算法-插入、选择、冒泡、快排、堆排等 .
- 常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- 常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java 常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java之常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- 常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- 几种常见的排序算法,选择排序,冒泡排序,希尔排序,堆排序,快速排序,归并排序,基数排序的比较
- myslq之TIMESTSMP详解
- Form Data vs Request Payload(转)
- iOS11 安全区域适配
- Unity3D 使用SceneManager跳转/加载场景
- 一名3年工作经验的程序员面感悟及职业理解
- C数据结构-几种常见的排序:冒泡,选择,插入,希尔
- 【案例】国家信息中心:国家公共资源交易服务平台一期工程决策支持服务系统定制项目
- adb命令
- Linux下启动tomcat报java.lang.OutOfMemoryError: PermGen space
- 且将新火试新茶
- iFunk:想太多,享太少,是一种辜负
- STM32 用于Modbus ASCII通信,进一步串口通信参数7,E,1特别注意
- WordPress Editor.md 关闭编辑界面提示的方法
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".