论简单排序算法和冒泡排序算法区别
2014-04-07 23:46
218 查看
简单排序算法
算法描述:若对n个数进行由大到小排序,则每趟从现有数中选出一个最大数,共进行n-1趟。
单从描述上看,有点类似迭代。“从n个数中选出最大数”是简单排序算法的原子操作。只是我们需要n个选出最大、次大、第三大....
从n个数中选出最大数思路:令最大数为a,数组num由n个数构成。实现:
int a=0;
for(int i=0;i<n;i++)
{
if(a<num[i])
exchange(a,num[i]);
}
推导至实现n个数的简单排序。思路:令i来控制比较的趟数,每一趟会产生个当前最大的数,放在队首。对于具体某趟,实现的就是从n数选最大数事情,只是被选择的数会随着趟数的增加而减少。实现:
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<10;j++)
{
if(num[i]<num[j])
exchange(num[i],num[j]);
}
}
冒泡排序
算法描述:不断比较相邻两个数大小,如果顺序错误,则交换。
思路:共比较n-1趟,每趟获得当前数中最大值,相比于简单选择排序不同的是:在具体某趟里,不只是简单地选择当前数中最大值,还要在相邻数比较中不断更换顺序。
在实现上明显不同:选择排序是每趟将已排序好的数放在前面(更多地体现了是多个从n趟选最大数的操作),进行i和j对应数组的比较。冒泡则是,具体某趟中,相邻数的比较。
实现:
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(num[j]>num[j+1])
exchange(num[j],num[j+1]);
}
}
虽然算法执行复杂度均为O(n^2),但冒泡排序效率比简单选择排序略高。
算法描述:若对n个数进行由大到小排序,则每趟从现有数中选出一个最大数,共进行n-1趟。
单从描述上看,有点类似迭代。“从n个数中选出最大数”是简单排序算法的原子操作。只是我们需要n个选出最大、次大、第三大....
从n个数中选出最大数思路:令最大数为a,数组num由n个数构成。实现:
int a=0;
for(int i=0;i<n;i++)
{
if(a<num[i])
exchange(a,num[i]);
}
推导至实现n个数的简单排序。思路:令i来控制比较的趟数,每一趟会产生个当前最大的数,放在队首。对于具体某趟,实现的就是从n数选最大数事情,只是被选择的数会随着趟数的增加而减少。实现:
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<10;j++)
{
if(num[i]<num[j])
exchange(num[i],num[j]);
}
}
冒泡排序
算法描述:不断比较相邻两个数大小,如果顺序错误,则交换。
思路:共比较n-1趟,每趟获得当前数中最大值,相比于简单选择排序不同的是:在具体某趟里,不只是简单地选择当前数中最大值,还要在相邻数比较中不断更换顺序。
在实现上明显不同:选择排序是每趟将已排序好的数放在前面(更多地体现了是多个从n趟选最大数的操作),进行i和j对应数组的比较。冒泡则是,具体某趟中,相邻数的比较。
实现:
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(num[j]>num[j+1])
exchange(num[j],num[j+1]);
}
}
虽然算法执行复杂度均为O(n^2),但冒泡排序效率比简单选择排序略高。
相关文章推荐
- 冒泡排序
- c++冒泡排序示例分享
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- python冒泡排序算法的实现代码
- c#冒泡排序示例分享
- c语言冒泡排序法代码
- php排序算法(冒泡排序,快速排序)
- PHP 冒泡排序算法的实现代码
- 冒泡排序算法原理及JAVA实现代码
- java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
- Java冒泡排序(Bubble Sort)实例讲解
- 用java实现冒泡排序算法
- 控制台显示java冒泡排序流程示例
- Java冒泡排序
- 冒泡排序法
- 2(1).选择排序_冒泡(线性表)
- 2(2).选择排序_冒泡(双向循环链表)
- 冒泡排序
- 冒泡排序
- 排序算法(快速排序、直接插入排序、直接选择、冒泡排序)