c語言實現數組的排序

 

本文章只對選擇排序和冒泡排序進行介紹數組

選擇排序其實是從0到length-1,選擇某個元素與其餘的元素進行大小比較,若是大於就交換,其餘狀況不作操做,如圖:函數

冒泡排序其實是先選擇某個元素,而後從最後一個元素依次往前比較(不超過選擇的元素),若是大於就交換,不然不變,如圖測試

`從圖能夠看出排序出的數彷彿是從地下往上冒出同樣,所以稱之爲冒泡排序法。選擇排序和冒泡排序算數複雜度都是n*n/2,效率不是過高spa

頭文件:code

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

函數原型:blog

 

void sortA1(int a[], int length);    //選擇排序

void sortA2(int a[], int length); //冒泡排序

void printA1(int a[], int length);   //遍歷數組

實現函數:排序

void sortA1(int a[], int length){

    int i, j, temp;

    for(i = 0; i < length; ++i){

        for(j = i + 1; j < length; ++j){

            if(a[j] < a[i]){    //若是後一個元素小於前一個元素則交換

                temp = a[i];

                a[i] = a[j];

                a[j] = temp;

            }

        }
    }

}

void printA1(int a[], int length){

    int i;

    for(i = 0; i < length; ++i){

        printf("%d,", a[i]);
    }

    printf("\n");

}

void sortA2(int a[], int length){

    int i, j, temp;

    for(i = 0; i < length; ++i){

        for(j = length - 1; j > i; --j){

            if(a[j] > a[j - 1]){
                
                temp = a[j];

                a[j] = a[j - 1];

                a[j - 1] = temp;

            }
        }

    }

}

測試:原型

 1 void main(){
 2 
 3     int length = 0;
 4 
 5     int a[] = {12, 43, 8, 50, 100, 52,0};
 6 
 7     length = sizeof(a) / sizeof(a[0]);
 8 
 9     printf("排序前\n");
10 
11     printA1(a, length);
12 
13     sortA1(a, length);
14 
15     printf("選擇排序後\n");
16 
17     printA1(a, length);
18 
19     sortA2(a, length);
20 
21     printf("冒泡排序後\n");
22 
23     printA1(a, length);
24 
25     system("pause");
26 }

運行結果:string

相關文章
相關標籤/搜索