标签:数据 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