1. 快速排序算法
- /* --------------------------------------------------------------------------**
- 函数名称: ms_quick_sort
- 参数含义: int data[] (i/o) 排序数组
- int low (i) 数组低序坐标
- int high (i) 数组高序坐标
- int order (i) 序列方式 (0 为递减,1 为递增)
- 功能简称: 快速排序。
- 功能描述: 将数组data[]中的范围在low到high的数据按制定的方式进行排序。
- 实现描述: 通过一趟排序将待排的记录分割为独立的两部分,其中一部分记录的关键字
- 均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到
- 整个序列有序。
- 创建日期: 2008年12月28日。
- / ---------------------------------------------------------------------------*/
- void ms_quick_sort(int data[], int low, int high, int order)
- {
- int i;
- int j;
- int pivot;
- bool exchg = false;
- if ( low < high )
- {
- pivot = data[low];
- i = low;
- j = high;
- while ( i<j )
- {
- // 高序数据的比较
- while ( i<j )
- {
- exchg = false;
- ms_data_order(exchg, pivot, data[j], order);
- if ( !exchg )
- {
- j--;
- }
- else
- {
- data[i++] = data[j];
- break;
- }
- }
- // 低序数据的比较
- while ( i<j )
- {
- exchg = false;
- ms_data_order(exchg, data[i], pivot, order);
- if ( !exchg )
- {
- i++;
- }
- else
- {
- data[j--] = data[i];
- break;
- }
- }
- }
- data[i] = pivot;
- ms_quick_sort(data, low, i-1, order);
- ms_quick_sort(data, i+1, high, order);
- }
- }