欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

quick sort

程序员文章站 2024-01-05 17:22:58
...
/**
	 * 快速排序
	 * 
	 * @param a
	 *            待排序的参数数组
	 * @param left
	 *            排序数组的起始索引
	 * @param right
	 *            排序数组的结束索引
	 */
	public void quickSort(int[] a, int left, int right) {

		// 需要排序
		if (left < right) {

			// 临时变量
			int temp = 0;

			// 从左边开始搜索,搜索大于基数的索引
			int i = left+1;

			// 从右边开始搜索,搜索小于基数的索引
			int j = right;

			// 选择基数
			int base = a[left];

			// 当交错时停止循环
			while(i<j) {

				// 从左边开始找出比基数大的数
				while (i <= right && a[i] < base)i++;

				// 从右边开始找出比基数小的数
				while (j > left && a[j] > base)j--;

				// 交换值
				if (i < j) {
					temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
			} 

			//这时j的值为小于等于基数,i的值大于等于基数
			{
				temp = a[j];
				a[j] = a[left];
				a[left] = temp;
			}
			
			//递归左子序列
			quickSort(a, j+1, right);

			//递归右子序列
			quickSort(a, left, j-1);
		}
	}

 

相关标签: J#