2007winter

做自己真心想做的事,你就没事了

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

2012年6月7日

摘要: 快速排序是由冒泡排序改进而得的,也是交换排序的一种。快速排序的基本思想如下:从线性表中选取一个元素,设为T,然后将线性表后面小于T的元素移到前面,而前面大于T的元素移到后面,结果就将线性表分成了两部分(称为两个子表),T插入到其分界线的位置处。这个过程称为线性表的分割。通过对线性表的一次分割,将线性表分为前后两个字表,且前面子表中的所有元素均不大于T,而后面子表中的所有元素都不小于T。如果对分割后的子表再按上述原则进行分割,并且这种分割可以一直做下去,直到所有子表为含有一个元素,此时线性表就变成了有序表。快速排序的平均时间复杂度为O(nlogn),它是不稳定的。代码:#include < 阅读全文
posted @ 2012-06-07 15:26 2007winter 阅读(119) 评论(0) 推荐(0)

摘要: 冒泡排序是一种典型的交换排序方法,其基本思想是:从第一个记录R1开始,对每两个相邻的关键字ki和ki+1进行比较,若ki>ki+1,则交换Ri和Ri+1的位置 ,使关键字较小的记录换到关键字较大的记录之前。经过一趟冒泡排序后,关键字最小的记录到达最前端,接着,在剩下的记录中找关键字次小的记录,并把它换在第二个位置上。以此类推,一直到所有记录都有序为止。冒泡排序的平均时间复杂度为O(n2),它是稳定的。代码:#include <iostream>using namespace std;#define T double//升序void bubble_sort(T R[],int 阅读全文
posted @ 2012-06-07 10:12 2007winter 阅读(129) 评论(0) 推荐(0)

摘要: 插入排序的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完为止。假设待排序的记录存放在数组R[0,...,n-1]中,排序过程的某一中间时刻,R被划分成两个子区间R[0,...,i-1]和R[i,...,n-1]。其中,前一个子区间是已排好序的有序区;后一个子区间是当前未排序的部分,不妨称其为无序区。直接插入排序的基本操作是将当前无序区的第1个记录R[i]插入到有序区R[0,...,i-1]中适当位置上,使R[0,...,i]变为新的有序区。这种方法通常称为增量法,因为每次使有序区增加1个记录。直接插入排序的时间复杂度为O(n2),它是 阅读全文
posted @ 2012-06-07 09:58 2007winter 阅读(122) 评论(0) 推荐(0)