选择,冒泡排序
来源:互联网 发布:淘宝刷客究竟犯不犯法 编辑:程序博客网 时间:2024/06/05 13:36
冒泡排序的思想很简单,如果要求排序后序列中元素按照从小到大的顺序排列,则冒泡排序的步骤如下:
1、依次比较序列中相邻的两个元素,将较大的放在后面,这样一趟比较后,最大的元素就放在了最后的一个位置;
2、再依次比较相邻的两个元素,将第二大的元素最终放到倒数第二个位置;
直接选择排序
直接选择排序的思想也很简单,以排序从小到大为例,如下:
1、从第一个元素开始,选出一个最小的元素与第一个元素互换;
2、继续从第二个元素开始,向后选出最小的元素,与第二个元素互换;
3、依次循环执行,直到最大的元素放在了最后一个位置上,排序完成。
我们可以将第一个元素分别与后面的元素进行比较,遇到更小的,就交换,这样一趟比较下来,第一个元素保存就是最小值,而后再从第二个元素开似乎,依次与后面的元素比较,遇到更小的,就交换,这样,第二趟比较下来,第二个元素保存的就是第二小的值。。。依次循环执行,直到完成排序。
1、依次比较序列中相邻的两个元素,将较大的放在后面,这样一趟比较后,最大的元素就放在了最后的一个位置;
2、再依次比较相邻的两个元素,将第二大的元素最终放到倒数第二个位置;
3、依次循环,直到最小的元素放在了第一个位置,排序完成。
void bubble_sort(int *arr,int len){int i,j,exc;for(i=0;i<len-1;i++)for(j=0;j<len-i-1;j++)if(arr[j]>arr[j+1]){exc=arr[j];arr[j]=arr[j+1];arr[j+1]=exc;}}改进:void bubble(int *arr,int len){int i,j ,exc;bool flag=true; //增设标志位,判断是否已经完成排序for(i=0;i<len-1&&flag;i++){flag=false;for(j=0;j<len-i-1;j++)if(arr[j]>arr[j+1]){//如果本趟比较没有数据发生交换,说明排序已经完成 //则flag一直为false,从而退出循环,不再进行下一趟的比较exc=arr[j];arr[j]=arr[j+1];arr[j+1]=exc;flag=true;}}}
直接选择排序
直接选择排序的思想也很简单,以排序从小到大为例,如下:
1、从第一个元素开始,选出一个最小的元素与第一个元素互换;
2、继续从第二个元素开始,向后选出最小的元素,与第二个元素互换;
3、依次循环执行,直到最大的元素放在了最后一个位置上,排序完成。
我们可以将第一个元素分别与后面的元素进行比较,遇到更小的,就交换,这样一趟比较下来,第一个元素保存就是最小值,而后再从第二个元素开似乎,依次与后面的元素比较,遇到更小的,就交换,这样,第二趟比较下来,第二个元素保存的就是第二小的值。。。依次循环执行,直到完成排序。
void select_sort(int *arr,int len){int i,j;for(i=0;i<len;i++)for(j=i+1;j<len;j++){if(arr[i]>arr[j]){int exc=arr[i];arr[i]=arr[j];arr[j]=exc;}}}改进:void select_sort(int *arr,int len){int i,j,min;for(i=0;i<len;i++){min=i;//用来记录每一趟比较的最小值的位置 for(j=i+1;j<len;j++)if(arr[min]>arr[j])min=j;//仅记录最小值的位置 //如果最小值的位置发生了变化, //则最后执行一次元素互换的操作 if(min!=i){int exc=arr[i];arr[i]=arr[min];arr[min]=exc;}}}
0 0
- 冒泡排序 选择排序
- 冒泡排序、选择排序
- 冒泡排序 选择排序
- 选择排序 冒泡排序
- 冒泡排序/选择排序
- 冒泡排序/选择排序
- 冒泡排序 选择排序
- 选择排序冒泡排序
- 选择排序 冒泡排序
- 冒泡排序、选择排序
- 冒泡排序,选择排序
- 选择排序-【冒泡排序】
- 冒泡排序,选择排序
- 选择排序&冒泡排序
- 冒泡排序选择排序
- 选择排序,冒泡排序
- 冒泡排序&选择排序
- 冒泡排序、选择排序
- HDU 4864(Task)
- starling 学习(二)配置过程
- 从用python做zoj1011发生Non-zero Exit Code错误说起
- 匹配最大字符串
- 10.2.0.1.1 grid control的启动和关闭
- 选择,冒泡排序
- 使用Label控件直接显示并更新时间
- capturing self strongly in this block is likely to lead to a retain cycle
- VIM中的搜索和替换
- typename的正确使用
- STL学习(七)remove_if 学习
- mac终端命令大全介绍
- 众包测试正在改变游戏规则
- oracle分页查询sql