摘要: 选择排序选择排序是一种不稳定的排序方式选择排序的思想是:n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:①初始状态:无序区为R[1..n],有序区为空。②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。③第i趟排序 第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的. 阅读全文
posted @ 2012-11-20 23:13 缓冲区溢出 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 快速排序 快速排序是一种很有效的排序方法,它是对起泡排序的一种改进,它的基本思想是:通过一趟排序,将待排记录分成两个独立的部分,其中一部分均比一个关键字小,另一部分均比这个关键字大。然后使用递归,分别对这两部分继续进行快速排序。 具体是怎样将待排记录分成两个部分的呢?以前在论坛上看过一篇文章,感觉说的很好,叫“挖坑填土”法。 ①:选取一个关键字(可以选择序列的第一个记录为关键字),把它挖出,这个地方就留下了一个坑。②:然后从序列的后面搜索,当找到一个比关键字小的数时,将这个小的数挖出,填入前面的坑中。③:然后从序列的前面搜索,当找到一个比关键字大的数时,将这个大数挖出,填入刚刚小数留下的... 阅读全文
posted @ 2012-11-20 22:51 缓冲区溢出 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 插入排序 插入排序是一种非常简单的排序方法,其算法思路是:将一个记录插入到已经排好的有序表中,从而得到一个新的,记录数加1的有序表。其实这种思想有点数学归纳法的味道,就是说 ①:如果只有一个数,那肯定是排好的;②假设{a1,a2,a3...a(i-1)}是有序的,那么将a(i+1)按照算法插入其中,也肯定是一个新的有序的数列,数列长度加1。 1 void insertion_sort_up(int a[],int n) 2 { 3 for(int j = 1; j < n; j++) 4 { 5 int key = a[j];//即将待插入的数 ... 阅读全文
posted @ 2012-11-20 22:33 缓冲区溢出 阅读(201) 评论(0) 推荐(0) 编辑