快速排序 冒泡排序
july大神博客上的一个特别简便的实现方法
void quicksort(int l, int u) { int i, m; if (l >= u) return; swap(l, randint(l, u)); m = l; for (i = l+1; i <= u; i++) if (x[i] < x[l]) swap(++m, i); swap(l, m); quicksort(l, m-1); quicksort(m+1, u); }
bubble sort
#include <stdio.h> int main(void) { int i; int j; int temp; int a[4] = {5, 3, 6, 2}; // bubblesort(a, 4); for(i = 0; i < 4; i++) for(j = 0; j < 4 - i - 1; j++) if(a[j] > a[j+1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } for(i = 0; i < 4; i++) printf("%d ", a[i]); printf("\n"); }
快速排序完整版 #include <stdio.h> void swap(int a[], int l, int u) { int temp; temp = a[l]; a[l] = a[u]; a[u] = temp; } void quicksort(int a[], int l, int u) { int i, m; if(l >= u) return; m = l; for(i = l + 1; i <= u; i++) { if(a[l] > a[i]) swap(a, i, ++m); } swap(a, l, m); quicksort(a, l, m -1); quicksort(a, m + 1, u); } int main() { int i; int a[4] = {5, 3, 6 ,1}; quicksort(a, 0, 3); for(i = 0; i <4; i++) printf("%d ", a[i]); }