三种常见排序

来源:互联网 发布:java list泛型 遍历 编辑:程序博客网 时间:2024/05/16 06:20
  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;} 
0 0