排序算法
排序算法
小呀小菜鸡
唯有坚持和钻研才能走的更远,Fighting
展开
-
归并排序
/*归并排序算法思想,其思想是基于合并,将两个或两个以上的有序表合成一个新的有序表首先将n个记录看成n个有序的子序列,每个子序列的长度为1然后两两归并得到n/2个长度为2的有序子序列,再在此基础上,对长度为二的进行两两归并,得到若干个长度为4的有序子序列。如此重复,直到得到一个长度为n的有序序列为止*/#include#includeusing namespace原创 2016-04-15 17:01:22 · 287 阅读 · 0 评论 -
简单选择排序
/*选择排序的思想,从第i个记录开始,通过n-i次关键字比较,从n-i+1个关键字中选出关键字较小的记录,并和第i个记录交换 */#includeusing namespace std;#define N 100typedef int KeyType;typedef char OtherType;typedef struct RecordType{KeyType原创 2016-04-15 16:58:36 · 301 阅读 · 0 评论 -
算法基础训练题(二)
2.归并排序 (10分)C时间限制:1 毫秒 | C内存限制:1 Kb输入描述多组测试数据。首先输入一个整数N表示数组元素个数N然后输入N个整数输出描述输出N个整数在一行,用空格隔开输入样例5 5 4 3 2 1输出样例1 2 3 4 5代码如下//归并排序(merge原创 2016-01-09 22:06:44 · 523 阅读 · 0 评论 -
冒泡排序
//冒泡排序,其实就是将n个数中最大的数放在a[n],/*再将n-1个数中最大的数的放在a[n-1],以此类推*/ #includeusing namespace std;#define N 100typedef int KeyType;typedef char OtherType;typedef struct RecordType{KeyType key;Ot原创 2016-04-15 17:09:00 · 388 阅读 · 0 评论 -
希尔排序
//思想,用间隔量让这几个数排序,即将待排序的关键字序列分成若干个/*较小的子序列,对子序列进行插入排序,使整个待排序序列排好序*/ #includeusing namespace std;#define N 100typedef int KeyType;typedef char OtherType;typedef struct RecordType{KeyType原创 2016-04-15 16:56:01 · 202 阅读 · 0 评论 -
快速排序
//将基准r[low]移至变量X,用两个变化的/*变量,即r[low]和r[high]两个值,通过改变low和high的值来时数组排好序 其一趟快速排序算法具体思想是1.让x=r[low],2.然后让r[high]的值都比x的值大,直到有一个值不大于x的值,用high记录下坐标值,如果low再让r[low]的值都比x的值小,直到有一个值不小于x的值,用low记录下坐标值原创 2016-04-15 17:07:27 · 229 阅读 · 0 评论 -
直接插入排序
//直接插入排序/*用数组存储数,并且用a[0]做监视哨,a[0]不存储数,让a[0]=a[i],将第i个数插入到前面i-1个已经排好序的记录,如果将a[0]与前面的a[i-1]比较,如果比他小,则a[i-1]向后移一个,a[0]插进去变成a[i-1],再将a[0]与他前面的一个数比较,以此类推,直到a[0]不比它前面的数小,则不用插了*/#includeusing原创 2016-04-15 16:52:26 · 465 阅读 · 0 评论 -
拆半插入
//拆半插入排序 /*采用拆半查找的方法,让x等于第i个的key值,在前i-1个数中进行拆半查找,最后找到x应该放的位置low,将下标low以后的位置都往后移一位,将x放在low下标对应的位置,然后以此类推*/ #includeusing namespace std;#define N 100typedef int KeyType;typedef cha原创 2016-04-15 17:03:44 · 562 阅读 · 0 评论