码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序c语言实现

时间:2020-03-07 19:01:29      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:比较   std   语言   temp   ble   通过   最大的   bubble   一个   

冒泡排序的基本思想是:

1.在长度为n的数组,通过不断比较两个相邻元素,把值大的往后移动,当遍历完最后一个元素时,最大值存放在数组[n-1]下标位置。

2.通过步骤1的比较后,数组长度为n-1(因为arr[n-1]的元素已是整个数组最大的,没必要再比较),然后再在长n-1的数组中找出次大的数放到

arr[n-2]位置,比较完成后数组无序部分长度为 n-2,然后循环执行这步直到数组无序部分长为1。

// 在长为len 的数组中,循环 n-2次比较,把最大值放在 arr[n-1]位置
void
buble(int arr[], int len) { for(int i = 0; i < len-1; i++) { if(arr[i] > arr[i+1]) { int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } }

以上完成把数组最大的元素放在arr[n-1]位置,现在数组无序的部分只有前面的arr[0]~arr[n-2],则循环设置数组长度设置为 n-1(找出次大的放在arr[n-2]), n-2, ..., 1, 最后完成

排序,第二步代码为

void bubble_sort(int arr[], int len)
{
    for(int i = len; i > 0; i--)  //数组从长到短,每循环一次,当前数组的最大值放在其最后位置
        buble(arr, i);
}

总的就是

#include<stdio.h>
void buble(int arr[], int len)
{
    for(int i = 0; i < len-1; i++)
    {
        if(arr[i] > arr[i+1])
        {
            int temp = arr[i];
            arr[i] = arr[i+1];
            arr[i+1] = temp;
        }
    }
}
void bubble_sort(int arr[], int len)
{
    for(int i = len; i > 0; i--)
        buble(arr, i);
}

int main()
{
    int array[6]={5, 4, 3, 5, 1};

    bubble_sort(array,5);

    for(int i=0;i<5;i++)
    {
        printf("%d ",array[i]);
    }
    printf("\n");

    return 0;
}

输出为:

1 3 4 5 5 

当两个相邻且相等的元素在比较时,即执行if( arr[i] > arr[i+1]) 时不会交换两个元素的位置,所有冒泡排序是稳定的。

冒泡排序c语言实现

标签:比较   std   语言   temp   ble   通过   最大的   bubble   一个   

原文地址:https://www.cnblogs.com/ilove-haha/p/12433888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!