快速排序

来源:互联网 发布:java trie树 编辑:程序博客网 时间:2024/05/03 02:04
// Function prototypesvoid quickSort(int list[], int arraySize);void quickSort(int list[], int first, int last);int partition(int list[], int first, int last);void quickSort(int list[], int arraySize){  quickSort(list, 0, arraySize - 1);}void quickSort(int list[], int first, int last){  if (last > first)  {    int pivotIndex = partition(list, first, last);    quickSort(list, first, pivotIndex - 1);    quickSort(list, pivotIndex + 1, last);  }}/* Partition the array list[first..last] */int partition(int list[], int first, int last){  int pivot = list[first]; // Choose the first element as the pivot  int low = first + 1; // Index for forward search  int high = last; // Index for backward search  while (high > low)  {    // Search forward from left    while (low <= high && list[low] <= pivot)      low++;    // Search backward from right    while (low <= high && list[high] > pivot)      high--;    // Swap two elements in the list    if (high > low)    {      int temp = list[high];      list[high] = list[low];      list[low] = temp;    }  }  while (high > first && list[high] >= pivot)    high--;  // Swap pivot with list[high]  if (pivot > list[high])  {    list[first] = list[high];    list[high] = pivot;    return high;  }  else  {    return first;  }}

0 0