编程:冒泡,选择,归并,快速
来源:互联网 发布:气味图书馆淘宝 编辑:程序博客网 时间:2024/05/16 19:08
排序的方式太多了,先重点掌握几个,其余有机会慢慢学习!!
一:概念知识点介绍
1)时间复杂度
一般用最深层循环内的语句中的原操作的执行频度(重复执行的次数)来表示;
如:
for(int i=0;i!=m;i++)
{
}
在这个双重循环中,第二个for循环是最深层循环,执行频度为m*n,因为时间复杂度为O(m*n);
常用时间复杂度比较:
O(1)<O(㏒n)<O(n)<O(n㏒n)<O(n2)<O(n3)
O(2n)<O(n!)<O(nn)
2)空间复杂度
指算法编写程序后,在计算机运行中所需存储空间大小的度量;
3)排序的稳定性
排序算法的稳定性,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。
二:排序的简要比较
时间复杂度:O(n2)-O(n2)-O(nlogn)-O(nlogn)
冒泡排序/选择排序:具有稳定性,简单容易理解;效率低;
归并排序/不平衡二叉树排序:具有稳定性,比上快,比下慢;
堆排序/快速排序:不具有稳定性,速度快;
三:实现详解
1)冒泡
思想:
--比较相邻的元素,按需要进行交换;
--第一次大循环把最小的"沉"到最下面;
--第二次大循环把第二小的"沉"到倒数第二位置;
--依次类推..
--第i个位置:
--直到-第n-1个位置(n表示数组元素的个数,a[n-1]表示数组的最后一个数)
void _sort_buble(int a[],int n)
{
}
2)选择
思想:
--依次以(第0,1,2..i..n-1)位为基准,分别和剩下的位比较,找出当前一个最大的或者最小的放该位置;
一个大循环后结果和冒泡类似,不同的是,冒泡是相邻元素的两两比较,选择是以一个为基准和剩余的比较;
void _sort_select(int a[],int n)
{
}
3)归并
4)快速
思想:快速排序是冒泡的改进,通过一趟排序吧数据分为独立的两个部分,一部分所有的数据都比另一部分要小;
然后用递归在对这两部分分别进行快速排序...在循环执行,直到数据变成有序序列;
void QuickSort(int a[], int l, int r, bool Up)
{
int i,j;
int Mid,k;
i=l;
j=r;
Mid=a[(l+r)/2];
if (Up)
{
do
{
while (a[i]<Mid) ++i;
while (Mid<a[j]) --j;
if (i<=j)
{
k=a[i];
a[i]=a[j];
a[j]=k;
++i;
--j;
}
} while (i<=j);
}
else
do
{
while (a[i]>Mid) ++i;
while (Mid>a[j]) --j;
if (i<=j)
{
k=a[i];
a[i]=a[j];
a[j]=k;
++i;
--j;
}
} while (i<=j);
if (i<r) QuickSort(a,i,r,Up);
if (l<j) QuickSort(a,l,j,Up);
}
(2011-10-25 15:16:08)
- 编程:冒泡,选择,归并,快速
- 自主编程实现选择,冒泡,快速,归并,希尔排序
- 归并、冒泡、选择、快速、计数、基数
- 冒泡、选择、插入、归并、快速排序代码
- 插入 | 希尔 | 冒泡 | 快速 | 选择 | 归并排序
- 6种排序算法:冒泡、鸡尾酒、选择、插入、归并、快速
- 冒泡、选择、插入、归并、希尔、快速排序效率比较代码
- 排序算法-冒泡、插入、归并、希尔、快速、选择--代码总结
- 冒泡、选择、插入、归并、希尔、快速排序效率比较代码 .
- 链表之排序(插入、选择、归并、快速、冒泡)
- 数组排序(插入、选择、希尔、堆、归并、快速、冒泡)
- 冒泡、鸡尾酒、选择、插入、归并、快速排序的C++程序
- 冒泡,插入,选择,归并,快速排序的C++实现
- C 各种排序(选择/冒泡/快速/插入/希尔/归并/堆)
- c排序算法:选择、冒泡、插入、快速、归并、堆排序
- 冒泡、选择、插入、归并、快速、堆排序效率测试
- Java 冒泡排序、选择排序、快速排序、归并排序
- 直接插入、冒泡、快速、简单选择、堆、归并排序算法
- Source Insight的一些技巧
- 编程:阿拉伯数字转为钱数@递归方法(如123,转为一百二十三)
- 如何在 Eclipse 中显示代码的行号 .
- 片上总线Wishbone 学习(五)总线周期之复位操作
- [How-To]如何使用GNU Make 简化Google Closure Compiler的使用
- 编程:冒泡,选择,归并,快速
- Ubuntu-server 无法上网的解决办法
- [How-to]如何更加方便的在FreeBSD中使用ntfs-3g
- Eclipse 不能build, pom文件上面有叉叉 解决办法
- SqlServer位运算 权限设计
- 带环求环起开始节点位置
- iphone ios 视频拍摄旋转
- 仿iphone 气泡短信 自定义list适配器实现
- 家乡的冬天