2014年(32)
分类:
2014-09-25 22:52:14
原文地址:算法导论读书笔记之快速排序 作者:RealAMD
#include "quickSort.h" int partition(int *A, int l, int r) { int i, j, x, temp; for(x = A[r], i = l - 1, j = l;j <= r - 1;j++) { if(A[j] <= x) { i++; temp = A[i]; A[i] = A[j]; A[j] = temp; } } temp = A[i + 1]; A[i + 1] = A[r]; A[r] = temp; return (i + 1); } void quickSort(int *A, int l, int r) { int q; if(l < r) { q = partition(A, l, r); quickSort(A, l, q - 1); quickSort(A, q + 1, r); } } |
#ifndef QUICKSORT_H #define QUICKSORT_H int partition(int *A, int l, int r); void quickSort(int *A, int l, int r); #endif |
#include "quickSort.h" #include #include #include #include void print_array(int *a, int len) { int i = 0; for(i = 0;i < len;i++) { printf("%d ", a[i]); } printf("\n"); } int main() { int i, len; int *A; printf("len = "); scanf("%d", &len); if( (A = (int *)malloc(sizeof(int) * len)) == NULL) { perror(strerror(errno)); return 1; } for(i = 0;i < len;i++) { A[i] = rand() % 100; } printf("Before quick sorting : "); print_array(A, len); quickSort(A, 0, len - 1); printf("After quick sorting : "); print_array(A, len); return 0; } |