
排序
文章平均质量分 75
星武者
转行 android
展开
-
选择排序
所谓选择排序,就是将一个数组的最小的元素放到a[0],然后将出a[0]外的最小的(即是第二小的)放在a[1]。#include <stdio.h>void Select_sort(int a[], int n);int main(void){ int n, i; printf("请输入你想排序的数目:"); scanf("%d", &n); int a[n];原创 2017-03-20 21:08:52 · 195 阅读 · 0 评论 -
排序之归并排序
归并排序利用了分治和递归的思想,将一个数组分成两部分,然后在分成两部分……知道两个数组只有一个值,然后在合并成一个数组。 看到了归并排序,忽然发现前段时间做的一个题,就是这个排序的一部分。 那道题大致是将将两个有序的数组,不利用排序合并成一个有序的数组。 核心代码如下:void MemeryArray(int a[], int n, int b[], int m, int c[]){原创 2017-03-20 21:40:08 · 373 阅读 · 0 评论 -
快速排序及优化
快速排序顾名思义,快速排序是时间复杂度比较快的一种排序。1. 快速排序快速排序的算法思想是:通过一趟排序将待排序的数组分割成两部分,其中一部分的关键字均比另一部分的关键字小,然后继续对这两部分继续排序,最后整个序列就是有序的了。很明显,快速排序的思想的一种递归的思想。 首先要选择一个关键字作为枢轴值,然后想办法使得将它放到一个位置,使得左边的值小于枢轴值,右边的值大于枢轴值。 其中最重要的就是这原创 2017-12-24 14:52:54 · 5082 阅读 · 0 评论 -
排序之直接插入排序和折半插入排序
直接插入排序直接插入排序时将一个记录插入到一个已经有序的的表或者数组中,从而得到一个新的有序的表或者数组。 就像打牌一样,拿到一张牌后,要往手中的牌里插,使手中的牌还是有序的。假如手中有4,6,7三张牌,现在拿到的下一张牌是5,那么肯定要插在4之后,直接插入排序也是这个道理。 假如现在有数组:{11,2,5,78,34,56,23},直接插入排序的过程如下: 代码实现如下:void Ins原创 2017-12-28 14:52:13 · 713 阅读 · 0 评论 -
排序之希尔排序
希尔排序希尔排序是直接插入排序的升级,希尔排序的出现冲破了O(n2)O(n^2)时间的屏障, 它的思想是将待排序的序列分割成若干子序列,分割的方式是隔几个元素(相隔“增量”)取一个元素,然后依次进行直接插入排序,然后减小增量,循环进行上述的过程,直到增量为1。当增量为1是也就是对待排序的序列进行直接插入排序,那么排序之后的序列就肯定是有序的了。 随着增量的缩小会使整个序列达到基本有序,而直接插入排序原创 2018-01-01 21:24:23 · 271 阅读 · 0 评论