冒泡排序是常见的排序方法,算法思路是经过两层循环逐个将最大数放到底部,直到所有排列完毕。
若是要逆序排列,在内层循环中把最小数放到底部便可。
代码:算法
#include "stdafx.h" #include "stdlib.h" #include"conio.h" #include <stdio.h> int main(int argc, char* argv[]) { int i = 0; int j = 0; int temp; int count = 0; int arr[10]; int n = sizeof(arr)/sizeof(arr[0]); //生成一个随机数组 for(i=0;i<n;i++){ arr[i] = rand(); } printf("排列前的数组:"); for ( int i=0; i< n; i++) { printf("%d, ",arr[i]); } /** * 两轮循环: * 内轮实现最大数放到最后; * 外轮循环记录剩余数,让内轮循环每次操做剩余的未经排列的数字。 */ for ( i=0; i< n-1; i++) { for ( j=0; j< n-1-i; j++) { if(arr[j]>arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1]= temp; } count++; } } printf("排列后的数组:"); for ( int i=0; i< n; i++) { printf("%d, ",arr[i]); } printf("\n循环总轮数: %d\n",count); system("pause"); return 0; }