![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
onlyxinbaby
这个作者很懒,什么都没留下…
展开
-
快速排序
快速排序是通用的内部排序算法。相对归并排序来说速度更快并且不需要辅助空间(那个b数组)。快速排序的版本有很多种。 用分治的思想来看快速排序: 1.划分问题:把数组的元素重排后分成左右两部分,左边的任意元素都小于等于右边的任意元素。 2.递归求解:把左右两部分分别进行排序。 3.合并问题:不用合并,此时数组已经完全有序。 代码实现: void sort(int *a,原创 2017-02-08 21:10:11 · 196 阅读 · 0 评论 -
归并排序
归并排序采用分治的思想: 1.划分问题:将序列分成元素个数尽量相等的两个序列。 2.递归求解:把两半元素分别排序。 3.合并问题:把两个有序表合并成一个。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。void MemeryArr原创 2017-02-08 20:40:29 · 203 阅读 · 0 评论 -
简单排序与检索
给出n个数,从这n个数查找一个数x并输出这个数的位置。#include #include using namespace std; const int maxn=10000; int main() { int n,x,a[maxn];//n个数中查找x while(scanf("%d%d",&n,&x)==2&&n) { for(int i=0;i<n;i原创 2017-02-08 20:35:05 · 194 阅读 · 0 评论 -
直接插入排序
直接插入排序:将待排序序列分为有序区和无序区,不断的将无序区的元素插入有序区。插入的时候要依次比较有序区的元素找到合适的插入位置。可以顺序比较,也可以逆序比较。这里采用逆序比较方法,即把r[i]和r[i-1],r[i-2]......r[1]比较,在r[0]处设置哨兵。 #include using namespace std; void InsertSort(int a[],int n)原创 2017-05-31 21:25:35 · 208 阅读 · 0 评论 -
冒泡排序
从第一个数开始,通过比较(将大数后移)将其沉底,也就是说没一次都将除了上一次沉底的那个数以外的所有的数中的最大数放到了这些数的最后。有n个数,进行n-1次冒泡排序,第i次进行n-1-i次比较交换。 贴代码: #include #include using namespace std; void BinSort(int a[],int n) { for(int i=0;i<n-原创 2017-06-05 21:44:51 · 212 阅读 · 0 评论