快速排序(C++)

int partition(int arr[], int low, int high) {

int i = low;
int j = high;
int base = arr[low];

if (low < high)
{
	while (i < j)
	{
		while (i < j && arr[j] >= base)
		{
			j--;
		}
		if (i < j)//右边小于基数
		{
			arr[i++] = arr[j];
			//i++;//或arr[i++] = arr[j];
		}
		while (i < j && arr[i] < base)
		{
			i++;
		}
		if (i < j)//左侧大于基数
		{
			arr[j--] = arr[i];
			//j--;
		}
		arr[i] = base;
	}	
  }
  return i;
}

void QuickSort(int *arr, int low, int high)
{
   if (low < high)
     {
	int index = partition(arr, low, high );
	cout << index << endl;
	QuickSort(arr, low, index - 1);
	QuickSort(arr, index + 1, high);
     }
}

int main(void)
{
  int arr[] = { 163, 161, 158, 165, 171, 170, 163, 159, 162 };
  int len = sizeof(arr) / sizeof(arr[0]);


  QuickSort(arr, 0, len - 1);

  for (int i = 0; i < len; i++)
  {
	cout << arr[i] << "\t";
  }
  return 0;
}

  

上一篇:JAVA高级架构师基础功:Spring中AOP的两种代理方式:动态代理和CGLIB详解


下一篇:tp6微信公众号开发者模式基础消息