码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法---思想简要概述

时间:2016-07-19 22:09:17      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

比较排序:

涉及知识:

  分治法:将一个问题分解成规模更小、结构相似的子问题,解决问题A,变成了解决问题A1和A2,解决问题A1变成了解决问题A11和A12。。。,一直到最小单元,当最小单元问题解决后,依次向上返回,问题A得以解决。因为问题和子问题之间解决思路是相似的,所以解决时会调用相同的程序体,表现为问题调用自己解决子问题,而结果则是从最小单元依次向上返回,称之为递归。

1. 插入排序:在已排序好的序列中,给要插入元素找到并空出应在位置,并插入该元素。

2. 合并排序:将排序分解为合并两个内部已排好序的子序列的问题,表现为先排序分拆的子序列再递归合并。

3. 冒泡排序:每次必将一个最大或最小元素像水中气泡一样,升到最高水面(放在序列最前面),关键:在冒泡的过程中,顺便会交换排序不对的两个相邻元素,这点与选择排序不同。例:3,2,6,5,4,在4冒泡时,会将4放置到6的前面,然后再让2冒泡;而选择排序只会对比得出4大于2,让2放到最前,4的位置不变化。

4. 堆排序:利用最大/小堆的所有子树根节点的值都是最值的特点,建立堆,取根节点,对剩余元素继续建立堆,通过此过程实现排序。

5. 快速排序:使用一个分界点,将一个序列分成小于和大于分界点的两个子序列(子序列内部并未排序),表现为先设置分界点划分两个序列,再递归排序每个子序列。

 

非比较排序:

涉及知识:

  稳定排序:进行排序的相等元素,在输入和输出时的相对位置保持不变。

1. 计数排序:记录每个元素出现的次数,计算得出每个元素应该在的位置。该排序方法要求知道排序元素是那些,才可实现对这些元素进行计数。该排序可以是稳定排序。

2. 基数排序:从低位向高位逐列排序。低位排出一个顺序,如果高位不能改(相等),那么保持顺序不变(所以高位排序要求是稳定排序),如果高位能改,那么按照高位改变排序。由低向高排序的原因,由高向低排序时,低位无权修改高位的排序,因为需要数据按照高位的值分成不同部分(1的在一起,2的在一起。。。,避免低位修改了高位排序),再在每个部分内部进行低位排序。

3. 桶排序:通过对比元素和桶基数,将元素散布到多个桶中,(也是一种hash算法),再将桶内元素排序,即可实现排序。

排序算法---思想简要概述

标签:

原文地址:http://www.cnblogs.com/hoopoe/p/5679569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!