C语言冒泡排序法分析及代码实现

时间:2024-01-03 23:10:26

冒泡排序法:

所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法。具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。一般地,如果有N个数需要排序,则需要进行(N-1)趟起泡。

步骤分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
假如有9个数的一组数:6,8,1,2,4,3,5,9,7
从第一个数起,依次和相邻两个数比较,前大后小则换位
第一轮:比较9-1次
6和8进行比较,6<8,则不换位,得到  6,8,1,2,4,3,5,9,7
8和1进行比较,8>1,则换位,得到    6,1,8,2,4,3,5,9,7
8和2进行比较,8>2,则换位,得到    6,1,2,8,4,3,5,9,7
8和4进行比较,8>4,则换位,得到    6,1,2,4,8,3,5,9,7
8和3进行比较,8>3,则换位,得到    6,1,2,4,3,8,5,9,7
8和5进行比较,8>5,则换位,得到    6,1,2,4,3,5,8,9,7
8和9进行比较,8<9,则不换位,得到  6,1,2,4,3,5,8,9,7
9和7进行比较,9>7,则换位,得到    6,1,2,4,3,5,8,7,9
第二轮:比较9-1-1次
6和1进行比较,6>1,则换位,得到    1,6,2,4,3,5,8,7,9
6和2进行比较,6>2,则换位,得到    1,2,6,4,3,5,8,7,9
6和4进行比较,6>4,则换位,得到    1,2,4,6,3,5,8,7,9
6和3进行比较,6>3,则换位,得到    1,2,4,3,6,5,8,7,9
6和5进行比较,6>5,则换位,得到    1,2,4,3,5,6,8,7,9
6和8进行比较,6<8,则不换位,得到  1,2,4,3,5,6,8,7,9
8和7进行比较,8>7,则换位,得到    1,2,4,3,5,6,7,8,9
第三轮:...后面我就不写,一共比较9-1轮.也就是有多少个元素,则比较多少个元素个数-1次.

C语言冒泡排序法分析及代码实现

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
//冒泡排序法
voidbubbleSort(intarr[],intlen){
    for(inti=0;i<len-1;i++){
        for(intj=0;j<len-1-i;j++){
            //相邻两个元素进行比较,如果前面元素比后面元素大则交换位置
            if(arr[j]>arr[j+1]){
                arr[j]=arr[j]^arr[j+1];
                arr[j+1]=arr[j]^arr[j+1];
                arr[j]=arr[j]^arr[j+1];
            }
        }
    }
    //打印排序后的数组
    for(inti=0;i<len;i++){
        printf("%d ",arr[i]);
    }
}
intmain(intargc,constchar*argv[]){
    //定义一个元素个数为10的数组,并赋值
    intnum[9]={6,8,1,2,4,3,5,9,7};
    //调用函数,传入数组和元素个数
    bubbleSort(num,9);
    printf("\n");
    return0;
}