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

比较排序:

涉及知识:

  分治法:将一个问题分解成规模更小、结构相似的子问题,解决问题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算法),再将桶内元素排序,即可实现排序。

转载于:https://www.cnblogs.com/hoopoe/p/5679569.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值