C语言:冒泡排序例子

//冒泡排序 
//14个数字排序:14个数的组合:14*13/2=91次 理论上比较91次 ,实际只有39次进行了变量交换 
#include <stdio.h>
void bubble_sort(int arr[], int len) {
    int i, j, temp,ci=0,sjci=0;
    for (i = 0; i < len - 1; i++)
        for (j = 0; j < len - 1 - i; j++)
            {
                ci++;
                if (arr[j] > arr[j + 1])
                 {
                    sjci++;
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
    printf("理论次数=%d,实际交换次数=%d\n",ci,sjci);
}
int main() {
    int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
    int len = (int) sizeof(arr) / sizeof(*arr);
    printf("%d,%d,%d\n",len,sizeof(arr),sizeof(*arr));
    bubble_sort(arr, len);
    int i;
    for (i = 0; i < len; i++) {
        printf("%d ", arr[i]);
    }  
    return 0;
}

 

posted @ 2021-06-21 19:12  myrj  阅读(220)  评论(0编辑  收藏  举报