![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
MetalGear2077
一个学生
展开
-
排序算法(6)堆排序
排序算法(6)堆排序---选择排序的高级版思想:利用数据结构堆的思想来排序,堆排序利用了大堆(或小堆)堆顶记录的关键字最大(或最小)这一特征,使得当前无序的序列中选择关键最大(或最小)的记录变得简单。(升序—建大堆,降序—建小堆),可以说是选择排序的高级版。代码实现://堆排序算法函数void HeapSort(int array[], int size){ BuildHeap(array, size); // 初始化堆 for (int i = size - 1; i &..原创 2021-04-23 09:22:27 · 65 阅读 · 0 评论 -
排序算法(5)快速排序
排序算法(5)快速排序思想:递归,分治法。1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。 代码实现:void QuickSort(int arr[], int low, int high)//low和high是上下限{ if (low < high) { int temp = arr[low]; int left = low, right = h.原创 2021-04-23 09:14:29 · 77 阅读 · 0 评论 -
排序算法(4)希尔排序
排序算法(4)希尔排序原理: 希尔排序也称缩小增量排序;希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时(用gap = gap / n+ 1 控制,越来越小,即增量减小),保证了最后一次进行直接插入排序,算法终止。(其中直接插入排序是希尔排序gap = 1的特例)另外,gap越大,值越大的容易到最后面,但是不太接近有序。 一般gap不要超过数组大小的一半. 你可能会说为什么一开始就直接插入排序,毕竟最后也...原创 2021-04-23 08:54:21 · 84 阅读 · 0 评论 -
排序算法(3)选择排序
排序算法(3)选择排序原理:思想:两个变种(1)单侧选择:在一个无序数组中选择出每一轮中最大值(或最小值)元素,放到最前面或最后面(升序)(2)双向选择:在一个无序数组中选择出每一轮中最值元素,然后把这一轮中最前面的元素和min交换,最后面的元素和max交换;然后缩小范围(开始位置(begin++)++,最后位置(end–)--),重复上面步骤,最终得到有序序列(升序)。代码实现:单侧选择版:void SelectSort1(int a[], int n){ for (in..原创 2021-04-23 08:35:10 · 110 阅读 · 0 评论 -
排序算法(2)直接插入排序
排序算法(1)插入排序原理:将数组中的所有元素依次和前面的已经排好序的元素相比较(依次) ,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过。代码实现:void InsertSort(int arr[], int n){ for (int end = 1; end < n; end++)//用end的位置控制边界 { //单趟排序 int temp = arr[end];//暂时存储end的值 int i = end - 1; for (;...原创 2021-04-23 08:11:10 · 50 阅读 · 0 评论 -
排序算法(1)冒泡排序
排序算法(1)冒泡排序原理:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。代码实现:void BubbleSort(int arr[], int n){ for (int i = 0; i < n-1 ; i++) { fo.原创 2021-04-23 08:05:34 · 65 阅读 · 0 评论