黑马程序员技术交流社区

标题: 改进的冒泡排序法分享 [打印本页]

作者: XiaoBaoMi    时间: 2015-6-28 15:52
标题: 改进的冒泡排序法分享
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main() {
  4.     char ch = ' ';
  5.     int b = 0, count = 0, temp = 0;
  6.     int a[10000];
  7.     int flag = 0;
  8.     printf("请输入一串数字,以空格分隔以回车结束\n");
  9.     //数组的录入
  10.     for (int i = 0; ; i++) {
  11.         scanf("%d",&b);
  12.         a[i] = b;
  13.         scanf("%c",&ch);
  14.         count++;
  15.         if (ch == '\n') {
  16.             break;
  17.         }
  18.     }
  19.     for (int i = 0; i < count - 1; ++i) {
  20.         for (int j = 0; j < count -1 - i; ++j) {
  21.             //大数沉底
  22.             if (a[j] > a[j + 1]) {
  23.                 temp = a[j];
  24.                 a[j] = a[j + 1];
  25.                 a[j + 1] = temp;
  26.                 //如果发生交换则记录位请0
  27.                 flag = 0;
  28.             }
  29.             //如果没有发生交换则记录位+1
  30.             else{
  31.                 ++flag;
  32.             }
  33.             //如果在这趟中一次交换都没有发生,说明数组是排好顺序的,跳出内层for循环
  34.             if (flag == (count - 1)) {
  35.                 break;
  36.             }
  37.         }
  38.         //如果数组是排好的则跳出外层for循环
  39.         if (flag == (count - 1)) {
  40.             break;
  41.         }
  42.         
  43.     }
  44.    
  45.     printf("排序后为:\n");
  46.     for (int i = 0; i < count; i++) {
  47.         printf("%d\t",a[i]);
  48.     }
  49.     return 0;
  50. }
复制代码

作者: pp584995727    时间: 2015-6-28 22:49
正在学习中.....
作者: Fighting--BJ    时间: 2015-6-29 01:10
学习学习!
作者: lixianzhu0712    时间: 2015-6-29 11:26
正在学习中....长知识!!!!!!!!!!!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2