昨晚复习了一下丢了好久的《数据结构》。
复习了一下快速排序,写了几遍发现是错的,最后发现教科书的例子就是错误的…………倒!难怪中国的计算机发展不上去!!!
贴出代码吧,就当备忘录:
void QuickSort(int Data[], int Start, int End) { assert(NULL != Data); assert(Start>=0); assert(Start<=End); int i = Start; int j = End + 1; int Key = Data[Start]; int temp; do { do { i++; } while(Data[i]<Key && i<j); do { j--; } while(Data[j]>Key && i<j); if (i<j) { temp = Data[i]; Data[i] = Data[j]; Data[j] = temp; } } while(i<j); Data[Start] = Data[j]; Data[j] = Key; if (Start<j-1) { QuickSort(Data, Start, j-1); } if (End > j+1) { QuickSort(Data, j+1, End); } } |