码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序

时间:2018-05-31 19:19:49      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:数据   std   遍历   amp   microsoft   交换   \n   temp   col   

排序算法之冒泡排序

 

 1 //优化后的冒泡排序
 2  #include "stdio.h"
 3 void swap(int *a,int *b);
 4 int array[5]={21,50,34,56,57};
 5 int main(){
 6     int i,j;
 7     int flag=1;
 8     int count=0; 
 9     //flag标记在此起到的作用为 
10     //如果在大循环过后,所有的数据都遍历后都没有发生交换,则该数据已有序,终止循环 
11     for(i=0; i < 5&& flag ;i++){
12         flag=0;
13         //i控制起始位置,j控制结束位置 
14         //从后往前比较,每次循环中最小的值会放在数组的最前面,之后该值不参与循环,由i控制 
15         //每次循环中的最小值会跑到数组的前面,形似冒泡,故冒泡排序 
16         for(j=4;j>i;j--){
17             printf("i="); 
18             printf("%d\t",i); 
19             printf("j="); 
20             printf("%d\n",j); 
21             if(array[j]<array[j-1]){
22                 //传过去的参数是数组中的地址 
23                  swap(&array[j], &array[j-1]);    
24                  flag=1;
25             }
26              count++;
27             }
28             
29         }
30          printf("循环次数"); 
31          printf("%d\n", count);
32             return    0;
33         }
34     void print(int *a,int *b){
35         printf("a=");
36         printf("%d\t",*a); 
37         printf("b=");
38         printf("%d\n",*b);     
39     }
40     void printArray(){
41         printf("{"); 
42          for (int i = 0; i < 4; i++)  
43             {  
44             printf("%d\t", array[i]);  
45             } 
46             printf("}"); 
47             printf("\n");  
48     }
49     
50  void swap(int *a,int *b){
51      //打印交换的两个数 
52      print(a, b);
53      int temp;
54      temp=*a;
55      *a=*b;
56      *b=temp;
57      printArray();
58      
59  }

 

 

 

冒泡排序

标签:数据   std   遍历   amp   microsoft   交换   \n   temp   col   

原文地址:https://www.cnblogs.com/chiyong/p/9118031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!