一、quicksort
1 int partition(int s[], int l, int r) 2 { 3 int i = l, j = r; 4 int x = s[l]; 5 while (i < j) 6 { 7 while (s[j] >= x&&i < j) 8 j--; 9 if (i < j) 10 { 11 s[i] = s[j]; 12 i++; 13 } 14 while (s[i] <= x&&i < j) 15 i++; 16 if (i < j) 17 { 18 s[j] = s[i]; 19 j--; 20 } 21 } 22 s[i] = x; 23 return i; 24 } 25 void quicksort(int s[], int l, int r) 26 { 27 if (l < r) 28 { 29 int pos = partition(s, l , r); 30 quicksort(s, l, pos - 1); 31 quicksort(s, pos + 1, r); 32 } 33 }
需要注意的:
每一步都要判断i<j是否成立。
用l和r标识出左右区间。每一次调用l和r都不一样。
ref: http://blog.csdn.net/morewindows/article/details/6684558
时间: 2024-10-28 11:12:07