排序算法 之 (冒泡排序)

10.3、冒泡排序

从后往前依次比较两个元素,如果后面小于前面就交换,每次都会寻找到其中最小的那个元素放到前面

冒泡排序图解

冒泡排序的C代码实现

#include <stdio.h>
#include <stdlib.h>

#define boolean int
#define false 0;
#define true 1;

//冒泡排序:nums:待排序数组,length:数组长度
boolean BubbleSort(int nums[],int length){
    if(length == 0) return false;//数组为空,不需要排序
    for(int i = 0; i < length-1;i++){
        boolean flag = false;//用来标记是否已经排好序了
        for(int j = length-1;j > i;j--){
            if(nums[j] < nums[j-1]){//如果后面的比前面小就交换
                int temp = nums[j];
                nums[j] = nums[j-1];
                nums[j-1] = temp;
                flag = true;
            }
        }
        if(!flag){//如果这次交换一次都没有发现表示已经排好序了,就直接退出
            return true;
        }
    }
}


int main(){
    int nums[] = {49,38,65,97,76,13,27,49};
    int length = 8;
    printf("直接插入排序前:");
    for(int i = 0; i < length ;i++){
        printf("%d ",nums[i]);
    }
    BubbleSort(nums,length);
    printf("\n");
    printf("直接插入排序后:");
    for(int i = 0; i < length ;i++){
        printf("%d ",nums[i]);
    }

    return 0;
}
//结果:
直接插入排序前:49 38 65 97 76 13 27 49 
直接插入排序后:13 27 38 49 49 65 76 97 
posted @ 2023-03-15 18:11  水三丫  阅读(14)  评论(0编辑  收藏  举报