大话数据结构-排序
2013-09-11 14:14
120 查看
文章知识点来至于大话数据结构里边章节知识, 这篇主要介绍各种经典的排序算法以及排序算法的使用。所涉及的算法主要包含冒泡排序、简单选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序,并对算法做了优化处理。相关代码源码请查看文章最后。本篇最后的算法描述和流程图以及代码实现是重点,如果对本篇感兴趣一定要通过该部分来巩固数据机构。
1 排序的基本概念和分类
排序定义:假设含有n个记录的序列为{r1, r2,…..,rn},其相应的关键字分别为{k1,k2,…….,kn},需确定1,2,…,n的一种排列p1,p2,p3…..,pn,使其相应的关键字满足kp1<=kp2<=kp3<=…<=kpn(非递减或非递增)关系,即使得序列称为一个按关键字有序的序列{rp1,rp2,rp3,…,rpn},这样的操作就称为排序。
稳定性:假设ki=kj(1<=i<=n,1<=j<=n,i<>j),且在排序前的序列中ri领先于rj(即i<j)。如果排序后ri仍然领先于rj,则称所有的排序方法是稳定的;反之,若可能使得排序后的序列中rj领先于ri ,则称为所有的排序方法是不稳定的。
2 内排序和外排序
内排序是在排序整个过程中,待排序的所有记录全部放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存中,整个过程需要在内外存之间多次交换数据才能进行。
内部排序性能影响:时间性能、辅助空间、算法的复杂性
3 冒泡排序
定义:冒泡排序是一种交换排序,他的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。
最简单排序实现:
单元测试
最后附上源代码下载地址:
http://download.csdn.net/detail/w_wanglei/5689883
1 排序的基本概念和分类
排序定义:假设含有n个记录的序列为{r1, r2,…..,rn},其相应的关键字分别为{k1,k2,…….,kn},需确定1,2,…,n的一种排列p1,p2,p3…..,pn,使其相应的关键字满足kp1<=kp2<=kp3<=…<=kpn(非递减或非递增)关系,即使得序列称为一个按关键字有序的序列{rp1,rp2,rp3,…,rpn},这样的操作就称为排序。
稳定性:假设ki=kj(1<=i<=n,1<=j<=n,i<>j),且在排序前的序列中ri领先于rj(即i<j)。如果排序后ri仍然领先于rj,则称所有的排序方法是稳定的;反之,若可能使得排序后的序列中rj领先于ri ,则称为所有的排序方法是不稳定的。
2 内排序和外排序
内排序是在排序整个过程中,待排序的所有记录全部放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存中,整个过程需要在内外存之间多次交换数据才能进行。
内部排序性能影响:时间性能、辅助空间、算法的复杂性
3 冒泡排序
定义:冒泡排序是一种交换排序,他的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。
最简单排序实现:
private static void TestQuickSort() { var array = new int[] {50, 10, 90, 30, 70, 40, 80, 60, 20}; var qSort = new QuickSortAlgorithm(); qSort.QSort(ref array); Assert.IsEqual(array[0], 10); Assert.IsEqual(array[array.Length - 1], 90); Assert.IsEqual(array[4], 50); }
单元测试
最后附上源代码下载地址:
http://download.csdn.net/detail/w_wanglei/5689883
相关文章推荐
- 大话数据结构 code 第九章 01排序_Sort
- 《大话数据结构》第9章 排序 9.6 希尔排序(上)
- 《大话数据结构》第9章 排序 9.4 简单选择排序
- 《大话数据结构》第9章 排序 9.6 希尔排序(下)
- 《大话数据结构》第9章 排序 9.10 总结回顾
- 《大话数据结构》第9章 排序 9.7 堆排序(上)
- 《大话数据结构》第9章 排序 9.3 冒泡排序(上)
- 《大话数据结构》第9章 排序 9.6 希尔排序(下)
- 《大话数据结构》第9章 排序 9.7 堆排序(下)
- 《大话数据结构》读书笔记——9.5直接插入排序
- 《大话数据结构》第9章 排序 9.3 冒泡排序(下)
- 《大话数据结构》第9章 排序 9.8 归并排序(上)
- 大话数据结构--排序
- 《大话数据结构》第9章 排序 9.8 归并排序(下)
- 《大话数据结构》第9章 排序 9.8 归并排序(下)
- 《大话数据结构》第9章 排序 9.9 快速排序(上)
- 《大话数据结构》第9章 排序 9.10 总结回顾
- 《大话数据结构》第9章 排序 9.5 直接插入排序
- 《大话数据结构》第9章 排序 9.8 归并排序(上)
- 《大话数据结构》第9章 排序 9.9 快速排序(下)