排序算法——冒泡,简单选择排序
来源:互联网 发布:淘宝hd停止服务 编辑:程序博客网 时间:2024/06/01 10:41
1.冒泡排序
思想:每次从0位置开始,arr[0]与arr[1]比较,大则交换,再将aa[1]与arr[2]进行比较.......一遍完成之后,最大的值一定在arr[len-1]的位置上。第二遍又从arr[0]开始,与后面相邻位置比较,直到arr[len-2]的位置结束,第三遍......直到排好序。代码如下:
for(int i=0;i<len-1;++i)
{
for(int j=0;j<len-i-1;++j)
{
if(arr[j]<arr[j+1])
{
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
冒泡排序算法时间复杂度为O(n2),即二次方
2.冒泡优化排序
冒泡优化排序主要是处理几乎有序的情况,可以提高代码效率,其思想是设置一个标志,用来表示上一趟循环是否发生过交换,如果发生过,那么这趟还得再做,但如果上趟循环未发生交换,说明已经有序,不必再进行后面的多趟循环了。
for(int i=0;i<len-1;++i)
{
int flag=0;
for(int j=0;j<len-i-1;++j)
{
if(arr[j]<arr[j+1])
{
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
flag=1;
}
if(flag==0)
break;
}
}
3. 简单选择排序算法
思想:先找出最小值,再交换。第一趟:初始化最小值min为arr[0]的0下标,将之后的每一个数都与该最小值下标所对应的数做比较,如果小于最小值数,将min赋值为当前实际最小值下标,直至找到最后一个数,如果最终找的min位置不是0,,则将最小值arr[min]与arr[0]交换,此时可以保证arr[0]的位置上的数一定是最小的数;第二趟:初始化min为1, 将之后的每一个数都与该最小值下标所对应的数做比较,如果小于最小值数,将min赋值为当前实际最小值下标,直至找到最后一个数,如果最终找的min位置不是1,此时可以保证arr[1]的位置上的数一定是剩下的所有数中最小的数;第三趟:..........直至排好序。代码如下:
for(int i=0;i<len-1:++i)
{
int min=i;
for(int j=i+1;j<len;++j)
{
if(arr[min]>arr[j])
{
min=j;
}
}
if(min!=i)
{
int tmp=arr[min];
arr[min]=arr[i];
arr[i]=tmp;
}
}
简单选择排序算法时间复杂度为O(n2),即二次方
- 排序算法——冒泡,简单选择排序
- 排序算法1—插入排序、选择排序、冒泡排序
- 三大简单排序算法——插入、选择、冒泡
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- 五、排序算法之简单算法——冒泡排序、简单选择排序和直接插入排序
- 简单排序算法:冒泡排序,选择排序,插入排序
- 简单排序算法(冒泡排序、选择排序、插入排序)
- 简单排序——冒泡,选择,插入
- Java简单算法之 冒泡排序 选择排序 插入排序
- 冒泡—选择排序
- 排序算法之选择排序——简单选择排序
- 简单排序算法:冒泡、选择、插入
- 简单排序算法整理(冒泡,选择,插入)
- 3种简单排序算法——冒泡,选择,插入排序
- 排序算法——简单选择排序
- 排序算法——简单选择排序
- 排序算法——简单选择排序
- 冒泡排序与简单选择排序——Java实现
- Spark开发-Action操作
- 判断元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)是合法序列
- Hough变换直线检测的MATLAB实现
- dp求解导弹拦截问题
- 无法识别字符集名称及字符集修改
- 排序算法——冒泡,简单选择排序
- LeetCode 83. Remove Duplicates from Sorted List
- Pyhton_IO_1
- Linux系统命令行基本操作(一)
- 关于Android屏幕适配的一些细节
- Java Web:从Servlet开始
- HTTP-8种请求方式
- docker save与docker export的区别
- String 和Integer中 == 和 equals的使用