C语言 冒泡排序

冒泡排序( Bubble Sort )

比较相邻的两个数,如果错误则进行交换,重复访问整个排序的数列

#include <stdio.h>
#define KSIZE 8

static int count;

// 冒泡排序
void bubble_sort(int a[],int n);

int main(int argc, const char * argv[]) {
    
    int number[KSIZE] = {1,2,3,4,5,6,7,8};
    int i;
    bubble_sort(number, KSIZE);
    printf("排序次数:%d
",count);
    for (i=0; i<KSIZE; i++) {
        printf("%d ",number[i]);
    }
    
    return 0;
}

void bubble_sort(int a[],int n)
{
    int i,j,temp;
    
    for (j = 0; j<n-1; j++)
        for (i=0; i<n-j-1; i++)
            if (a[i] < a[i+1]) { // 从大到小
                temp   = a[i];
                a[i]   = a[i+1];
                a[i+1] = temp;
                count++;
            }
}
冒泡排序

解析

1,2,3,4,5 — 希望得到:5,4,3,2,1

2,3,4,5,1 - 第一次排序 — 4次

3,4,5,2,1 - 第二次排序 - 3次

4,5,3,2,1 - 第三次排序 - 2次

5,4,3,2,1 - 第四次排序 - 1次

原文地址:https://www.cnblogs.com/chenyanliang/p/7380807.html