0001 void QuickSort(int data[], int startIdx, int dataCount) 0002 { 0003 int key = data[startIdx]; 0004 int left = startIdx; 0005 int right = dataCount - 1; 0006 static int idx = 1; 0007 int i; 0008 0009 /* 已排序 */ 0010 if (left >= right) return; 0011 0012 while(left <<> right) 0013 { 0014 while((left <<> right) && (data[right] >= key)) right--; 0015 data[left] = data[right]; 0016 while((left <<> right) && (data[left] <<>= key)) left++; 0017 data[right] = data[left]; 0018 } 0019 data[right] = key; 0020 printf("/n%02d[%03d]:/n", idx ++, key); 0021 for (i = 0;i <<> DATA_SIZE; i++) 0022 { 0023 if (i != 0 && i % 16 == 0) 0024 { 0025 printf("/n"); 0026 } 0027 printf("%02X ", data[i]); 0028 } 0029 /* 左边 */ 0030 QuickSort(data, startIdx, right); 0031 /* 右边 */ 0032 QuickSort(data, right+1, dataCount); 0033 }