冒泡排序(改进)和选择排序
来源:互联网 发布:管家婆软件下载地址 编辑:程序博客网 时间:2024/05/24 22:45
最近老师在讲排序,自己整理了一下冒泡排序和选择排序,供大家参考,有问题记得联系我哦
(一)、【冒泡排序】
参考:http://baike.baidu.com/link?url=WzNyqnxFZbPRbqqLLMdwbtqbB69Lb6542PR2wELGWKzI8hxsoWW6fuJPquZhD8hf#1
http://zh.wikipedia.org/wiki/冒泡排序
http://baike.so.com/doc/2392104.html
【冒泡排序算法的运作】如下:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
例:核心代码
int[] arr={23, 34, 54, 5653, 43, 88};//arr存放待排序的数
for(int i=0; i<arr.Length; i++)
{
for(int j=0; j<arr.Length-1; j++)
{
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
【冒泡排序改进】
改进一:使用标志的冒泡排序
(加一个标志位,当某一趟冒泡排序没有元素交换时,则冒泡结束,元素
已经有序,可以有效的减少冒泡次数。)
int[] arr = { 23, 34, 54, 5653, 43, 88 };//arr存放待排序的数
bool flag = true;//标记
while (flag)
{
flag = false;
for (int i = 0; i < arr.Length-1; i++)
{
if (arr[i] > arr[i + 1])
{
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
flag = true;
}
}
}
改进二:记录每一次元素交换的位置,当元素交换的位置在第0个元素时,则排序结束。
理解:如果有100个数的数组,仅前面10个无序,后面90个都已排好序且都大于前
面10个数字,那么在第一趟遍历后,最后发生交换的位置必定小于10,且这个位
置之后的数据必定已经有序了,记录下这位置,第二次只要从数组头部遍历到
这个位置就可以了。
int[] arr = { 23, 34, 54, 5653, 43, 88 };//arr存放待排序的数
int i = arr.Length - 1;
int lastChange = 0;
int j;
while(i > 0)
{
lastChange = 0;
for (j = 0; j < i; j++)
{
if (arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
lastChange = j;
}
}
i = lastChange;
}
(二)、选择排序
理解:先找出所有最小的数放在第一位,然后再在剩下的数中找出最小的数放在第二位……以此类推
知道所有的数都排完,结束排序
int[] arr = { 23, 34, 54, 5653, 43, 88 };//arr存放待排序的数
for(int i=0; i<=arr.Length; i++)
{
for(int j=i+1; j<=arr.Length; j++)
{
if(arr[i]>arr[j])
{
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
0 0
- 冒泡排序(改进)和选择排序
- 内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 排序总结:插入(简单和改进)、希尔、选择、冒泡、快速、堆排序、归并排序
- 冒泡排序和改进
- 排序(一)冒泡排序、冒泡改进——鸡尾酒排序、选择排序
- 选择排序和冒泡排序(JAVA)
- 直接(选择)排序和冒泡排序
- 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 第十七篇:内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- think in java第二章学习
- C++ Primer 中文版第五版错误(持续更新中)
- android高分段进阶攻略(4)android模拟点击
- iOS兵器谱
- rails 之 i18n
- 冒泡排序(改进)和选择排序
- JS将number数值转化成为货币格式
- 【SQL Server DBA】日常维护语句
- SPSS_20
- Boston Key Party CTF 2014 Crypto : 200
- hdu1733 分层网络流
- 仿iOS 7后台侧边菜单源码分析和总结
- 二维计算几何模板
- 知识总结