Sorting Algorithm-PreKnowledge

原创 2016年08月30日 20:52:43

作为《大话数据结构》的笔记


一、什么是排序

假设含有n个记录的序列{R1,R2,...,Rn},其相应的关键字分别为{k1,k2,...,kn},需确定1,2,...,n的一种排列p1,p2,...,pn,使其相应的关键字满足kp1<=kp2<...<=kpn非递减(或非递增)关系,即使得序列成为一个按关键字有序的序列{Rp1,Rp2,...,Rpn},这样的操作就称为排序。

Ex:ABCD的成绩如下

A       75

B       98

C       63

D       87

按成绩从大到小排序     结果为BDAC


二、排序的稳定性

假设ki=kj(1<=i<=n,1<=j<=n,i!=j),且在排序前的序列中Ri领先于Rj(即i<j)。如果排序后Ri仍领先于Rj,则称所用的排序方法是稳定的;反之,若可能使得排序后的序列中Rj领先Ri,则称所用的排序方法不稳定。

Ex:ABCD的原排列如下

A      75

B      75

C      87

D      96

稳定的排序结果          DCAB(AB的相对位置没有变)

不稳定的排序结果      DCBA(AB的相对位置变了)


三、内排序与外排序

根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序

内排序是在排序整个过程中,待排序的所有记录全部被放置在内存中。

外排序是由于排序记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。


四、内排序的算法性能(这里介绍的算法都是内排序)

1、时间复杂度

在内排序中,主要进行两种操作:比较和移动。比较指关键字之间的比较,这是要做排序最起码的操作。移动指记录从一个位置移动到另一个位置。高效率的内排序算法应该是具有尽可能少的关键字比较次数和 尽可能少的记录移动次数。

2、空间复杂度

除了存放待排序所所占用的存储空间之外,执行算法所需要的其他存储空间。


五、分类

按照算法的复杂度分为两大类

简单算法:冒泡排序、简单选择排序、直接插入排序

改进算法:希尔排序、堆排序、归并排序、快速排序


我们学习这些排序算法的目的更多并不是为了去在现实中编程排序算法,而是通过学习来提高我们编程算法的能力,以便于去解决更多复杂和灵活的应用性问题。




版权声明:本文为博主原创文章,未经博主允许不得转载。

js-sorting-algorithm

  • 2017年07月09日 23:04
  • 916KB
  • 下载

sicily Sorting Algorithm 一道题玩一种排序之shell排序

题目DescriptionOne of the fundamental problems of computer science is ordering a list of items. There’...
  • mgsweet
  • mgsweet
  • 2016年12月30日 10:15
  • 175

Sorting Algorithm-Quick Sort

Quick Sort-快速排序 快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行...

Introduction to Algorithm - Summary of Chapter 8 - Sorting in Linear Time

算法导论课后习题解析 第八章 算法导论课后总结 第八章

Sorting Algorithm-Shell Sort

Shell Sort-希尔排序 Algorithm: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成...

Analysis and implement some simple sorting algorithm.(1)

simple sorting algorithm   Input:A sequence of n numbers  Output: A reordering permutation of the...

Analysis and implement some simple sorting algorithm.(2)——heapsort

//modified by quanspace 2013-02-19 20:16//the time complexity is O(nlgn). # include # include usin...

Chapter7. Sorting algorithm summary C++/Python 排序算法总结

排序包括内部排序和外部排序。内部排序包括 插入排序,选择排序,交换排序,归并排序,基数排序。插入排序包括直接插入排序和希尔排序,选择排序包括简单选择排序和堆排序,交换排序包括冒泡排序和快速排序。...

Algorithm Review: Sorting

参考资料:http://blog.csdn.net/touch_2011/article/details/6767673 // 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插...
  • wyc1230
  • wyc1230
  • 2012年08月30日 10:33
  • 416
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sorting Algorithm-PreKnowledge
举报原因:
原因补充:

(最多只允许输入30个字)