这段时间复习数据结构,今天看到了排序,简单的记录下,便于后续总结之用
所谓排序,就是整理文件中的记录,使其按照关键字的递增(或递减)的顺序排列起来。
一、排序的基础知识
1、被排序的对象——文件
文件是由一组记录组成,记录则由若干个数据项(或域)组成。其中有一项可用来标识一个记录,成为关键字项。该数据项的值称为关键字(Key)。
2、排序运算的依据——关键字
关键字的类型可以是数字类型,也可以是字符类型。
3、排序的稳定性
(参见程序员面试宝典相关章节)
稳定的排序:冒泡排序;插入排序;归并排序;桶排序;基数排序;二叉树排序;图书馆排序
不稳定的排序:选择排序;希尔排序;堆排序;快速排序;
二、排序算法的分别介绍
1、冒泡排序,时间复杂度平均为O(n^2), 相比之下,效率较低,小数据量还可以,大的数据量尽量采用其他排序方法。
参考:http://blog.csdn.net/morewindows/article/details/6657829
2、插入排序,时间复杂度平局同为O(n^2)。
参考实现:
void Insertsort(int a[], int n)
{
int i, j;
for (i = 1; i < n; i++)
if (a[i] < a[i - 1])
{
int temp = a[i];
for (j = i - 1; j >= 0 && a[j] > temp; j--)
a[j + 1] = a[j];
a[j + 1] = temp;
}
}
3、希尔排序,
4、归并排序
快速排序,参考: