排序算法
konsy_dong
Java,C++,Python,linux
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ShellSort 希尔排序
希尔排序算法: 思路: 例如例子中的,首先步长increment为10/3=3,再之后为3/3=1,在每次步长循环时,外循环i=increment开始,直到最后一个数,内循环比较与前面(步长间隔)的数的大小,若小,则保存它,将前面的数移到后面,再将这个数插入。注释在代码中 代码实现://希尔排序(排序后为从小到大)#include <iostream>#include <algorithm原创 2017-03-22 16:09:11 · 453 阅读 · 0 评论 -
QuickSort 快速排序
快速排序算法:思路: 在QSort函数中,设置一个枢轴pivot,Partition函数中选择第一个数当作枢轴变量,经过循环交换,使得它左边的值都比它小,右边的值比它大;然后再递归调用QSort函数。 注:在最优的情况下,时间复杂度变O(nlogn);在最坏的情况下,时间复杂度为O(n^2)。空间复杂度为O(logn)。由于关键字的比较和交换是跳跃式进行的,因此,快速排序是一种不稳定的排序方法。原创 2017-03-23 17:22:47 · 523 阅读 · 0 评论 -
QuickSort 优化后的快速排序算法
1.优化选取枢轴 防止在第一次循环后,整个序列没有实质性的变化,如例子中的序列,则采用三数取中法(median-of-three)。即取三个关键字先进行排序,将蹭数作为枢轴,一般是取左端、右端和中间三个数,也可以随机选取。也有九数取中(median-of-nine)。优化代码块如下:int Partition(int *p, int low, int high){ int pivotkey原创 2017-03-23 23:08:12 · 1114 阅读 · 0 评论 -
HeapSort 堆排序
堆排序算法: 思路: 先将序列构成一个大顶堆,然后将将第一个元素和剩余大顶堆的最后一个元素调换,然后将然后元素数再-1,再将剩下的调整为大顶堆,一直循环,具体思路见代码注释。注:堆排序的时间复杂度为O(nlogn),性能上远远好过于冒泡、简单选择、直接插入排序,但是由于记录的比较与交换是跳跃式的,因此堆排序是一种不稳定的排序方法。代码实现://堆排序(排序后为从小到大)#include <io原创 2017-03-23 11:28:21 · 318 阅读 · 0 评论 -
BubbleSort 优化后的冒泡排序算法
优化后的冒泡排序算法:在刚开始写的时候,遇到想用size_t(即unsigned int)来表示数组索引,但是在进行比较时,j出现溢出,最后用int型来表示~注意点在注释中写明//优化后的冒泡排序(排序后为从小到大)#include #include using namespace std;void BubbleSort(int (&a)[7]){//数组作为引用形参传入,使原创 2017-03-16 15:00:06 · 862 阅读 · 0 评论 -
InsertSort 插入排序算法
InsertSort 插入排序算法:平均比较和移动次数为(n^2)/4,时间复杂度也为O(n^2)直接插入排序比冒泡和简单选择排序的性能要好一些。思路:从第二个数开始遍历到最后一个数,如果当前的数小于前一个数,用tmp保存当前数,比较前面的数与tmp的大小,如果比tmp大则将前面的数往后移动一位,最终将tmp存放在没有再比tmp数大的那个数的位置。代码://插入排序(排原创 2017-03-16 16:33:37 · 755 阅读 · 0 评论 -
SelectSort 选择排序
InsertSort 插入排序算法:总的时间复杂度为O(n^2)思路是,外循环先遍历第一个数至倒数第二个,设置最小的那个数的索引,内循环为从i+1开始遍历到最后一个,找出有没有比当前最小数索引小的索引,若有,进行交换,难度不大~//插入排序(排序后为从小到大)#include #include using namespace std;void InsertSort(int (原创 2017-03-16 15:45:40 · 809 阅读 · 0 评论 -
MergeSort 归并排序
归并排序算法: 思路,设置left,mid,right三个参数,对mid的左和右分别再进行递归调用归并排序算法,直到每个数组中只有1时返回,最终完成归并排序,具体思路见程序 注:归并排序的时间复杂度为O(nlogn),空间复杂度为O(n+logn)。 代码实现://归并排序(排序后为从小到大)#include <iostream> #include <algorithm> using n原创 2017-04-04 14:29:29 · 551 阅读 · 0 评论
分享