排序
qq_lzq
这个作者很懒,什么都没留下…
展开
-
归并排序
#include<stdio.h> #include<queue> #include<iostream> using namespace std; #include<algorithm> typedef long long ll; #define maxn 1000001 /*思想是不断的将数组二分,然后在分到两边只剩一个元素的时候,对两个元素进行...原创 2019-05-10 18:31:12 · 80 阅读 · 0 评论 -
快速排序
void swap(int&a, int&b)//交换值 { int temp; temp=a; a=b; b=temp; } void quick_sort(int a[], int s, int e)//s,e分别是排序的起点和终点 { if(s>=e) return ; srand(int(time(0))); int p = rand()%(e...原创 2019-05-10 18:30:33 · 100 阅读 · 0 评论 -
堆排序(升序排序)
1将数组初始化为大根堆 2从i=length-1(length是数组长度)开始循环直到i=0将a[0]和数组的最后一个元素数值交换,使数组最后一个元素成为最大值,次大,第三大....依次类推 3在步骤2每次第一个元素和最后一个元素交换值的时候,会破坏堆的结构,所以还要加多调整堆结构这一步骤。 调整堆代码 void swap(int & a,int &b)//交换值 ...翻译 2019-04-17 16:49:33 · 1448 阅读 · 0 评论 -
插入排序+希尔排序
希尔排序就是在插入排序的基础上添加一个分组的步骤。。。。先分组再对分的组分别进行插入排序。由于一开始分组的时候间隔比较大,每一组的元素个数比较少,此时插入排序的效率比较高。虽然后面进行分组的时候间隔小了,但是因为之前进行插入排序的时候数据已经基本有序了,此时插入排序的效率比直接对整个数组去插入排序的效率提高了不少。 当数组分组的间隔是1的时候,此时相当于对整个数组进行直接插入排序,排序完后,数组...原创 2019-05-10 09:50:54 · 94 阅读 · 0 评论 -
基数排序
参考链接:https://blog.csdn.net/daiyudong2020/article/details/52566364 https://blog.csdn.net/double_happiness/article/details/72452243 思路:比较位是“个位,十位,百位·······”根据相同的比较位把数据放到同一个桶中。 时间复杂度是 d*n(d 是数据中最大的那个数...翻译 2019-05-10 18:30:02 · 85 阅读 · 0 评论 -
双向冒泡排序
思路:在正向冒泡排序的基础上加一个反向的 冒泡排序。 #include<iostream> using namespace std; #define maxn 1001 int a[maxn], n; void swap(int & a, int & b) { int temp = a; a = b; b = temp; } void twobubbles...原创 2019-05-10 22:59:09 · 96 阅读 · 0 评论