三種常見排序

  1. 桶排序
#include<stdio.h>

int main() {

    int a[10], b;
    int i, j;

    for(i=0; i<10; i++) {
        a[i] = 0;
    }

    for(i=0; i<4; i++) {
        scanf("%d", &b);
        a[b]++;
    }

    for(i=0; i<10; i++) {
        for(j=1; j<=a[i]; j++) {
            printf("%d ", i);
        }
    }

    return 0;
} 
  1. 冒泡排序
#include<stdio.h>

int main() {

    int a[100], i, j, t, n;
    scanf("%d", &n);

    for(i=1; i<=n; i++) {
        scanf("%d", &a[i]);
    }

    for(i=1; i<=n-1; i++) {
        for(j=1; j<=n-i; j++) {
            if(a[j] < a[j+1]) {

            t = a[j];
            a[j] = a[j+1];
            a[j+1] = t;
            }
        }
    }

    for(i=1; i<=n; i++) {
        printf("%d ", a[i]);
    }

    return 0;
} 
  1. 快速排序
#include<stdio.h>

int a[101], n;

void quicksort(int left, int right) {
    int i, j, t, temp;
    if(left > right) {
        return;
    }

    temp = a[left];
    i = left;
    j = right;

    while(i != j) {
        while(a[j]>=temp && i<j)
            j--;

        while(a[i]<=temp && i<j)
            i++;

        if(i < j) {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
        }
    }

    a[left] = a[i];
    a[i] = temp;

    quicksort(left, i-1);
    quicksort(i+1, right);

    return;
}

int main() {
    int i, j;

    scanf("%d", &n);

    for(i=1; i<=n; i++) {
        scanf("%d", &a[i]);
    }

    quicksort(1, n);

    for(i=1; i<=n; i++) {
        printf("%d ", a[i]);

    }

    return 0;
} 
發佈了33 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章