C 實現冒泡排序


一、冒泡排序

冒泡排序的基本思路就是通過不斷的比較相鄰兩個數的大小,第一層循環0--->length-1,然后第二層不斷把大的一個數往后移動,每輪循環都會把最大的那個數放到最后。最多經過N-1輪就能完全排序好。如果優化下算法,還能更快。

二、C語言一般實現

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

void buble_sort(int arr[], int length);


void buble_sort(int arr[], int length)
{
    int i, j, max;
    for(i=0, i<length-1, i++)
    {
        for(j=0, j<length-i-1, j++)
        {
            if(a[j]>a[j+1])
            {
                max = a[j];
                a[j] = a[j+1];
                a[j+1] = max; 
            }
        }
    }
}


int  main()
{
    int arr_num[] = {17, 23, 5, 54, 13, 36, 7};
    bubble_sort(arr_num, 7); 
    for(int i=0; i<7; i++)
        printf("%d  ", arr_num[i]);
    printf("\n");
    system("pause");
    return 0;
}

三、C 語言改進實現

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

void better_buble_sort(int arr[], int length);


void better_buble_sort(int arr[], int length)
{
    int i, j, max;
    //設置標記位,sorted是否排序好
    bool sorted = true;
    for(i=0, i<length-1, i++)
    {
        for(j=0, j<length-i-1, j++)
        {
            if(a[j]>a[j+1])
            {
                //如果本輪循環,有未排序好的數,就將設置的標記改為false,繼續下輪循環
                sorted = false
                max = a[j];
                a[j] = a[j+1];
                a[j+1] = max; 
            }
        }
    }
    if(sorted) break;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM