快速排序

分组后的数组:4,5,14,23,52,11,
分组后的数组:4,5,11,23,52,14,
分组后的数组:4,5,11,14,52,23,
分组后的数组:4,5,11,14,23,52,
排序后的数组:4,5,11,14,23,52,

 

package datastructure;

public class QuickSort {

	public QuickSort() {
	}

	public static void quickSort(int[] datas, int low, int high) {
		if (low < high) {
			int p = partition(datas, low, high);
			quickSort(datas, low, p - 1);
			quickSort(datas, p + 1, high);
		}
	}

	public static int partition(int[] datas, int low, int high) {
		int index = low - 1;
		int last = datas[high];
		for (int j = low; j < high; j++) {
			if (datas[j] < last) {
				index++;
				if (j != index) {
					int tmp = datas[j];
					datas[j] = datas[index];
					datas[index] = tmp;
				}
			}
		}
		index++;
		if (index != high) {
			int tmp = datas[high];
			datas[high] = datas[index];
			datas[index] = tmp;
		}
		System.out.print("分组后的数组:");
		for(int i=0;i<datas.length;i++){
			System.out.print(datas[i]+",");
		}
		System.out.println();
		return index;
	}

	public static void main(String[] args) {
		int[] datas = { 11, 4, 14, 23, 52, 5 };
		QuickSort.quickSort(datas, 0, datas.length - 1);
		System.out.print("排序后的数组:");
		for(int i=0;i<datas.length;i++){
			System.out.print(datas[i]+",");
		}
	}

}

 

if (j != index)

if (index != high)

 

这两个判断我看网上一般人都没加,如果是不加的话有可能造成元素本身的交换,浪费资源

 

你可能感兴趣的:(J#)