经典快速排序,linux纯C实现。注意swap方法,并且这个算法还需再敲写15篇。
#include <stdio.h>void swap(int* a, int* b){*a = *a ^ *b;*b = *a ^ *b;*a = *a ^ *b;}int partition(int* a, int fI, int lI){int i = fI-1, j = 0;for(j=fI;j<=lI;j++){if(*(a+j) < *(a+lI)){i++;if(i != j) swap(a+j, a+i);}}if(i+1 != lI)swap(a+i+1, a+lI);return i+1;}void quickSort(int* a, int fI, int lI){int partI = 0;if(fI >= lI)return;partI = partition(a, fI, lI);quickSort(a, fI, partI-1);quickSort(a, partI+1, lI);}int main(){int a[10] = {241,325425,56765,234,13,34574,4653,5687689,432552,2789};int L = sizeof(a) / sizeof(int);int i = 0;quickSort(a, 0, L-1);for(;i<L;i++)printf("%d ", *(a+i));printf("\n");return 0;}