黑马程序员技术交流社区
标题:
冒泡排序:键盘输入数字,把这些数字按照从小到大排列
[打印本页]
作者:
408205555
时间:
2015-7-21 10:17
标题:
冒泡排序:键盘输入数字,把这些数字按照从小到大排列
本帖最后由 408205555 于 2015-7-21 10:26 编辑
void main(char argc,const char * argv[]){
//需求:从键盘获取10个数放入到数组中,然后找出10个数中最大的数
//定义变量,记录10个数字中的最大值
int max=0;
//创建数组
int numbers[10];
//记录数组长度
int length=sizeof(numbers)/sizeof(int);
//使用for循环,循环输入10个数字,并放入到数组
for(int i=0;i<length;i++){
//提示用户输入10个数字
printf("请输入%d个数字:",i+1);
scanf("%d\n",&numbers);
}
//冒泡排序,有n个数,就循环n-1次
//外层为什么要length-1?
//4个数互相比较需要比3次,3个数互相比较需要比2次,所以n个数比较就要比n-1次
for(int i=0;i<length-1;i++){
//内层为什么要length-n?
//外层每循环一次,都会有一个数字下沉,循环两次就有两个数字下沉,n次就会有n个数字下沉
//为了程序更有效率的对数字排序,我们将已经下沉的数字不再参与到下次的比较,也就是让剩下的数进行比较
//length-n就是n次循环后剩下的数字的个数,length-n-1就是剩下的数字需要互相比较的次数
for(int j=0;j<length-1-i;j++){
if(numbers[j]>numbers[j+1]){
//max相当于中转站,让两个数互转位置的同时不至于丢失其中一个数据
max=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=max;
}
}
}
//for循环打印排序后的数组
for(int i=0;i<length;i++){
printf("%d \n",numbers);
}
}
作者:
294250051
时间:
2015-7-21 10:25
.............................
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2