交换排序-快速排序

来源:互联网 发布:windows 10 14393 编辑:程序博客网 时间:2024/05/01 12:45
package com.larry.sorting;import java.util.Arrays;public class QuickSort {/** * 一趟排序,将一个元素放在最终位置 * @param s数组的某一部分,初始为整个数组 * @param first待排序的初始元素 * @param end待排序的末尾元素 * @return 该元素的最终位置 */private int partition(int s[], int first, int end){int i = first, j = end;while(i < j){while(i < j && s[i] <= s[j]) j--;if(i < j){int temp = s[i];s[i] = s[j];s[j] = temp;i++;}while(i < j && s[i] <= s[j]) i++;if(i < j){int temp = s[i];s[i] = s[j];s[j] = temp;j--;}}return i;}/** * 递归一趟排序,得到最终的顺序(升序排列) * @param s:整个数组 * @param first待排序的初始位置 * @param end待排序的末尾位置 */private void quickSort(int s[], int first, int end){if(s == null) return;if(first < 0) return;if(end >= s.length) return;if(first < end){int midPoint = partition(s, first, end);partition(s, first, midPoint - 1);partition(s, midPoint + 1, end);}}public static void main(String[] args) {int s[] = {23, 13, 49, 6, 31, 19, 28};new QuickSort().quickSort(s, 0, s.length - 1);System.out.println(Arrays.toString(s));}}

0 0
原创粉丝点击