zoukankan      html  css  js  c++  java
  • 数据结构(四)之冒泡排序

    下面是我的冒泡排序的代码:

     1 /*
     2 冒泡排序
     3 */
     4 
     5 #include <stdio.h>
     6 
     7 void main(){
     8    int array[2000];
     9    int numberCount;
    10    int i;
    11    int j;
    12    int temp;
    13    int flag;
    14 
    15    printf("请为数组输入对应的数据(整型数)并且当输入-9999时结束输入的动作!
    
       ");
    16    for(i=0;i<2000;i++){
    17       scanf("%d",&array[i]);
    18       if(array[i]==-9999){break;}
    19    }
    20 
    21    numberCount=i;
    22    printf("
    
    此数组中的有效数据有:%d 个!",numberCount);
    23 
    24    //此段代码是整个冒泡排序的核心,有两层循环控制,外层控制冒泡的趟数,内层控制冒泡排序的规则
    25    for(i=0;i<numberCount;i++){
    26       flag=0;
    27       for(j=numberCount-1;j>=i+1;j--){//此句代码最为关键尤其是j>=i+1这一句,
    28                                       //当然完全理解冒泡排序的原理代码还是比较简单的
    29           if(array[j]<array[j-1]){
    30              temp=array[j];
    31              array[j]=array[j-1];
    32              array[j-1]=temp;
    33              flag=1;
    34           }
    35       }
    36       if(flag==0){break;}
    37    }
    38 
    39    printf("
    
    此数组经冒泡排序后的升序序列如下:
    
       ");
    40    for(i=0;i<numberCount;i++){
    41       printf("%d ",array[i]);
    42    }
    43 
    44    printf("
    
    此数组经冒泡排序后的降序序列如下:
    
       ");
    45    for(i=numberCount-1;i>=0;i--){
    46       printf("%d ",array[i]);
    47    }
    48 
    49    printf("
    
    ");
    50 }

          冒泡排序在我最初学习c语言的时候就敲过,不过时间一长就不能一下子搞定了,用自然语言描述的话其原理也是比较容易懂的!只是在控制内层的冒泡规则的时候要结合外层的循环控制变量,是一个比较不太好理解和容易出错的地方!不过总体而言理解其原理,多试几次多思考一些还是比较容易成功的实现冒泡排序的!

         下面是补记的冒泡排序的基本思想:通过相邻元素之间的比较和交换,使关键字较小的元素逐渐从底部移向顶部,就像水底下的气泡一样逐渐向上冒泡,每趟的冒泡动作都使待排序的序列部分有序了,下次再冒泡时再次的扩大有序的部分,知道整个序列全部有序为止!

        冒泡的现象很容易想象,转换成c语言的形式要注意的地方在代码中也已表明,此段代码还是比较容易的,当然,也需要练习练习,一气呵成一点没错也不是那么容易的!

  • 相关阅读:
    操作系统进程
    Lowest Common Ancestor of a Binary Search Tree
    Java并发编程实践之对象的组合
    字典序排序-求全排列(元素有重复)
    计算机网络基础知识
    多线程的基础知识
    多线程编程题
    Flask安装
    appium使用实例
    调用Excel或Oracle数据,数据加载,selenium等使用实例
  • 原文地址:https://www.cnblogs.com/godtrue/p/3304544.html
Copyright © 2011-2022 走看看