
排序
likee003
这个作者很懒,什么都没留下…
展开
-
内部排序之直接插入排序
直接插入法,顾名思义,就是从n个需要排序的数值中,从第一个数开始,一遍一遍地与前一个数比较(一般第一个数不动,从第二个数开始),如果小于前一个数,就交换位置,再与前面一个数比较,以此类推,把它前面的数全部比较完。比如:第i个数一直要与它前面的(i-1)个数比较完,依次类推,直到n个数排序完毕。 它是一种最简单也最容易理解的排序方法,其代码如下:#include #原创 2009-12-05 15:54:00 · 323 阅读 · 0 评论 -
内部排序之选择排序
选择排序和直接插入排序有时候比较容易混淆,选择排序是每步从需要排序的记录里面选出关键字最小的记录,按照顺序放在已经排序的记录序列里面,直到全部排完为止。 它的关键字的比较次数与各元素原来的排列顺序无关,:第一次选择(i=0)比较n-1次,第二次选择比较n-2次,依此类推。但是元素的移动次数与初始排列顺序有关:如果R[0..n-1]原来就是从小到大排列,则不需要移动;但是如原创 2009-12-06 17:47:00 · 260 阅读 · 0 评论 -
内部排序之冒泡排序
冒泡排序和快速排序都属于交换排序,交换排序的基本方法是:两两比较待排序记录的关键字,并交换不满足次序要求的那些偶对,直到全部满足为止。 冒泡排序的算法思想是:通过无序区中相信记录关键字间的比较和位置,使关键字最小的记录如气泡一样往上浮,直到浮至水面。整个算法从关键字的最后面开始,对每两个相信记录的关键字进行比较,且使关键字小的记录换至关键字较大的记录之上,使得经过一趟冒泡原创 2009-12-06 18:12:00 · 283 阅读 · 0 评论 -
内部排序之快速排序
快速排序是由冒泡排序改进而来的,它的基本思想是:在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入最终位置后,整个数据区间被此记录分割成两个子区间。所有关键字比该记录关键字小的放置在前子区间中,所有比它大的放置在后子区间中,并把该记录排在这两个子区间的蹭,这个过程叫一趟快速排序。之后对两个子区间分别重复以上过程,直到每个子区间只有一个记录。 通常彩从两头向原创 2009-12-07 20:00:00 · 235 阅读 · 0 评论 -
内部排序之希尔排序
希尔排序又称为缩小增量排序,基本思想是把记录按下标的一定增量d分组,对每组记录彩直接插入排序方法进行排序,随着增量逐渐减小,所分成的组包含的记录越来越多,当增量的值减小到1时,整个数据合成为一组,构成一组有序记录,则完成排序。#include #include using namespace std; #define MAXITEM 10原创 2009-12-05 17:12:00 · 265 阅读 · 0 评论 -
快速排序
<br />#include <iostream>using namespace std;#define Cutoff 3void Swap(int &a, int &b){ int Tmp; Tmp = a; a = b; b = Tmp;}void InsertionSort(int A[], int N){ int j, P; int Tmp; for(P = 1; P < N; P++) { Tmp = A[P];原创 2010-07-04 11:36:00 · 255 阅读 · 0 评论 -
直接插入法排序
<br />#include <iostream>#include <iomanip>using namespace std;typedef struct{ int key; int data;}LineList;void InsertSort(LineList R[], int n){ int i, j; LineList tmp; for(i=1;i<n;i++) { tmp = R[i]; j = i - 1; while(原创 2010-06-05 09:15:00 · 453 阅读 · 0 评论