需要了解的几种算法
来源:互联网 发布:python 前端框架 编辑:程序博客网 时间:2024/05/19 15:22
1、选择排序:
对比前一个和后一个元素的大小,记录元素小的下标location,继续对比下标location和再后一个元素,再次记录元素小的下标location;依次比较到最后一个元素,第一轮结束,此时得到最小元素的下标为location,将第一个元素和location的元素进行交换位置,此时最小的元素放在了第一个位置。再次进行第二轮。。。
//选择排序void selectSort(int arr[],int length){ for (int i = 0; i < length; i++) { int loca = i; for (int j = i + 1; j < length; j++) { if (arr[loca] > arr[j]) { loca = j; } } int temp = arr[i]; arr[i] = arr[loca]; arr[loca] = temp; } printf("selectInsert : "); printfArrList(arr, length);}
2、插入排序:
将目标元素向已排好的队列中的相应位置插入,依次进行
void insertSort(int arr[],int length){ for (int i = 0; i < length; i++) { int last = arr[i];//最后一个元素 int temp = arr[i+1];//待比较元素 /* for() 实现 for (int j = i + 1; j >= 0; j--) { if (temp < arr[i]) { arr[i+1] = last; if (j == 0) { arr[j] = temp; break; } }else{ arr[j] = temp; break; } } */ //while实现 int j = i + 1; while (temp < arr[i]) { arr[i+1] = last; j--; } arr[j] = temp; } printf("insertSort : "); printfArrList(arr, length);}
3、冒泡排序
比较相邻的元素。如果第一个比第二个大,就交换他们两个。第一轮结束后,最大的元素在最末的位置,依次进行比较
void bubbleSort(int arr[],int length){ for (int i = 0; i < length; i++) { for (int j = 0; j < length - i - 1; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } printf("bubbleSort : "); printfArrList(arr, length);}
4、快速排序:
选择一个参考数,
通过一趟排序将要排序的数据分割成独立的两部分,参考数的左边都比它小,参考数的右边都比他大,然后再按此方法对参考数两边的数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
void qucikSort_grow(int arr[],int min,int max){ if (max <= min) { return; } int i = min; int j = max; int temp = arr[i]; while (i < j) { while (temp <= arr[j] && i < j) { j--; } arr[i] = arr[j]; while (temp >= arr[i] && i < j) { i++; } arr[j] = arr[i]; } arr[i] = temp; qucikSort_grow(arr, min, i - 1); qucikSort_grow(arr, i + 1, max);}//快速排序void qucikSort(int arr[],int length){ qucikSort_grow(arr, 0, length - 1); printf("qucikSort : "); printfArrList(arr, length);}
未完待续
0 0
- 需要了解的几种算法
- 几种必须了解的分布式算法
- 机器学习工程师需要了解的十种算法
- 机器学习工程师需要了解的十种算法
- 机器学习工程师需要了解的十种算法
- 机器学习工程师需要了解的十种算法
- 机器学习工程师需要了解的十种算法
- 想学习的几种算法 基本的了解
- 转载--几种必须了解的分布式算法
- iOS工程需要了解的排序算法
- c++基础1:需要了解的几点重要概念
- c++基础1:需要了解的几点重要概念
- c++基础1:需要了解的几点重要概念
- 需要初始化的几种
- 学习算法需要了解学习的相关知识
- 学习算法需要了解学习的相关知识
- 你需要了解百度的几个核心算法
- 主宰这个世界的10种算法,你了解其中的几种?
- 第一次提薪加资如何才能成功
- Socket bind failed: [730048]
- 数据库优化之复制策略和分库分表
- 手势监听 GestureDetector.SimpleOnGestureListener
- javah 的路径问题
- 需要了解的几种算法
- 面试题(ASP.NET应用开发)
- 【Linux】解决ubuntu14.04下升级系统之后搜狗输入法不能用的问题
- LeetCode刷题【Array】 Search in Rotated Sorted Array II
- FIFO IP核在DSP与ARM之间做数据缓存
- 自定义校验器实例
- LintCode 跳跃游戏 解答
- java 获取邮件数据
- Objective-C如何自己实现一个基于数组下标的属性访问模式