这是冒泡排序的变种吗? 冒泡排序和选择排序
来源:互联网 发布:淘宝 账号 霸王条款 编辑:程序博客网 时间:2024/06/06 19:07
学习排序算法,自己写了一个,结果写完发现跟经典的冒泡算法不一样。
经典的冒泡算法是先把最大的找出来,放到最后,bubble
我的是先把最小的找出来,放到最前面,这应该都是一个变种吧。bubble
void bubble1(int *number,int count) //大的往下{int i,j,k=0; //循环次数控制int m; //打印数组控制int temp; //临时变量 bool ischanged;for ( i=count; i>0;i--){ischanged=false;printf("bubble1第%d遍结果:",count-i);for ( j=0;j<i-1;j++)if (number[j]>number[j+1]) { temp=number[j]; number[j]=number[j+1]; number[j+1]=temp; ischanged=true; }if(!ischanged){break;}for ( m=0;m< count;m++)printf("%d,",number[m]); printf("\n");}printf("bubble 排序后");printf("[");for (int i=0;i<count;i++){printf("%d,",number[i]);}printf("]");}
void bubble(int *number,int count) //小的往上{int i,j,k=0; //循环次数控制int m; //打印数组控制int temp; //临时变量 bool ischanged;for ( i=0;i< count;i++){ ischanged=false;printf("bubble第%d遍结果:",i);for ( j=i+1;j<count;j++)if (number[i]>number[j]){temp=number[i];number[i]=number[j];number[j]=temp; ischanged=true;}if(!ischanged){break;}for ( m=0;m< count;m++)printf("%d,",number[m]); printf("\n");}printf("bubble 排序后");printf("[");for (int i=0;i<count;i++){printf("%d,",number[i]);}printf("]");}
结果
还有选择排序,这个是看的经典的啦
思路就是先把最小的下表找出来,然后交换,这样效率就高了
void select(int *number,int count){int i,j,k=0; //循环次数控制int m; //打印数组控制int temp; //临时变量 for ( i=0;i< count;i++) { k=i; printf("select第%d遍结果:",i); for ( j=i+1;j<count;j++) if (number[k]>number[j]) k=j; if(k!=i) { temp=number[i]; number[i]=number[k]; number[k]=temp; } for ( m=0;m< count;m++) printf("%d,",number[m]); printf("\n"); } printf("select 排序后"); printf("["); for (int i=0;i<count;i++) { printf("%d,",number[i]); } printf("]");}
结果
来个主函数
#include <iostream>#include <string>#include <stdio.h>using namespace std;void size();void avg( int * number,int count);void select(int *number,int count);void bubble(int *number,int count);void bubble1(int *number,int count);void main(){int number[]={11,10,9,8,7,1,5,4,3,2,6}; // int number[]={11,2,3,4,5,6,7,8,9,10,1};int count =sizeof(number)/sizeof(int);printf("count = %d\n",count);// string b=NULL;avg(number,count);// printf("avg = %.3f\n",b);printf("select排序前\n");printf("[");for (int i=0;i<count;i++){printf("%d,",number[i]);}printf("]");printf("\n");select(number,count);printf("\n"); //intnumber1[]={11,10,9,8,7,6,5,4,3,2,1};int number1[]={11,2,8,4,33,55,7,3,9,10,1};//int number1[]={11,10,9,8,7,1,5,4,3,2,6};printf("bubble排序前\n");printf("[");for (int i=0;i<count;i++){printf("%d,",number1[i]);}printf("]");printf("\n");bubble(number1,count);printf("\n");//size();int number2[]={11,2,8,4,33,55,7,3,9,10,1};//int number1[]={11,10,9,8,7,1,5,4,3,2,6};printf("bubble1排序前\n");printf("[");for (int i=0;i<count;i++){printf("%d,",number2[i]);}printf("]");printf("\n"); bubble1(number2,count);printf("\n");}
ok, 两天的学习结果。
还有知道int,char等的占得字节数用sizeof(int)。
- 这是冒泡排序的变种吗? 冒泡排序和选择排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 选择排序和冒泡排序
- 冒泡排序 和 选择排序
- 冒泡排序和选择排序
- 选择排序和冒泡排序
- 冒泡排序和选择排序
- ZOJ 题目分类 Simulation Problems
- 精美网页制作素材
- Java基础23天--05--网络编程(TCP和UDP)
- MPICH2(1.2.1) Debian6 安装配置参考
- devexpress xtrareport
- 这是冒泡排序的变种吗? 冒泡排序和选择排序
- Java基础24天--01--网络编程(TCP--上传图片)
- create a function returns a table (using cursor)
- naive date(time) 和aware date(time)的区别 及 pymongo操作dateime的注意事项
- 利用表分区简化数据库维护
- 可变参数表 -----如何实现printf函数(1)
- 数据库镜像入门
- 关于 SQL Server 群集的几个关键技巧
- oracle安装与卸载