您的位置:首页 > 理论基础 > 数据结构算法

java入门一DAY06------从数据结构开始6

2014-04-02 00:15 253 查看
排序

排序的分类:

插入排序(直插排序、二分排序、希尔排序)

交换排序(冒泡排序、快速排序)

选择排序(直接排序、树形排序、堆排序)

归并排序(二路归并排序、多路归并)

分配排序(多关键字排序、基数排序)

排序算法的稳定性:

关键码相同的数据对象在排序过程中是否保持前后次序不变。

如果不变,则该排序方法是稳定的,否则是不稳定的。

排序的时间开销

它是关键衡量算法的好坏标准,通常算法执行中的数据比较次数和数据的移动次数来衡量的

一、插入排序

基本原理:每步将一个待插序的对象,按照其关键码的大小,插入到前面已经排好序的一组对象适当位置上,直到对象全部插上

常用的方法:直接插入法,折半插入法,shell排序等

1 直接插入法

思想:当插入第i个数据对象时,前面的数据对象V1 V2 V3...Vi-1已经排序好序,此时用Vi的关键码与V1 V2...Vi-1的关键码顺序进行比较,找到想要的插入位置j,即将vi插入,位置j以后的对象向后瞬移。

2 折半插入法

基本思想:当插入第i个数据对象时,前面的数据对象V1 V2 V3...Vi-1已经排好序,此时用Vi的关键码与V1 V2...Vi-1的关键码按照折半的方法进行比较,找到插入位置j,插入,位置j以后的对象顺序向后移动

3 shell排序

该方法是由D L shell 提出 又称缩小增量排序

基本思想:该待排序的数据对象有n个,首先取一个整数d<n作为间隔,将全部对象分为d个子序列,所有距离为d的对象放在同一个序列中,在每一个子序列中分别施行直接插入排序,然后缩小间隔d,如取d=d/2,重复上述的子序列划分和排序工作,直到最后取d为1为止

二、交换排序

交换排序的基本原理,是在待排序的记录顺序中,两两比较待排序记录的关键字,并交换不满足要求的偶对,直到整个序列中的所有记录都满足要求为止

常见的方法有:冒泡 快速排序

1 冒泡排序

基本思想:在待排序中,从待排序R1开始,两两比较R1,key与Ri+1,KEY(i=1,2,3,....N-1),第1趟比较完毕后,RN,key为关键字最大的

再从待排序记录R1开始,两两比较Ri与key

以此类推 排序完成

2 快速排序

基本思想:在待排序中选出一个节点为基准值,大于放右,小于放左,依次排序。

三、选择排序

选择排序基本原理是将待排序的记录分为已排序和未排序两组,依次将未排序的记录中关键字码最小的记录插入已排序的组中

常见的方法有:简单选择排序,树型(锦标赛排序、堆排序)

1简单排序

思想 选择一个元素与后面的比较

实现步骤:

1 从所有的n个记录中,选取关键字值最小的记录,与第一个记录交换位置

2 从所有的n-i+1个记录中,选取关键字值最小的记录,与第i个记录交换位置

3 i取1 2 3...n-1,重复执行

四、归并排序

归并排序的基本思路:通过对两个或两个以上的有序节点序列合并来实现排序

常见的归并排序方法有:2路归并排序,多路归并排序等

---------------------- 拖走FM----期待与您交流! --------

收音机,电台,网上电台,广播,在线广播,网络广播,广播电台,网络电台,在线电台,电台在线收听,广播电台在线收听,网络电台在线收听,在线收听电台,fm收音机,网络收音机,广播下载,在线收音机,收音机软件下载,电台软件下载,网络收音机下载--------------

---------------------- 拖走FM----期待与您交流! --------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: