这是我写的一个快速排序的算法,如果不明白时,可以给我发邮件1553026118@qq.com- package com.itheima;
- import java.util.Arrays;
- /**
- * 排序方法主要有:快速排序,冒泡排序,插入排序(直接,折半,二路),选择排序
- * 本例实现快速排序
- * @author Administrator
- *
- */
- public class Test2 {
- public static void main(String[] args) {
- int arr[] ={51,32,62,96,87,17,28};//定义数组
- new Test2().quickSort(arr, 0,arr.length-1);
- System.out.println(Arrays.toString(arr));
- }
-
- /**
- * 实现数组内两个数值交换
- * @param a对应的数组
- * @param i数组的下标
- * @param j数组的下标
- */
- public void change(int a[], int i, int j)
- {
- if(i==j)
- {
- return;
- }
- int tmp = a[i];//实现交换
- a[i] =a[j];
- a[j] = tmp;
- }
-
- /**
- *
- * @param arr 带排序的数组
- * @param low
- * @param height
- * @return i
- */
- public int partition(int arr[],int low,int height)
- {
- //当前位置为第一个元素所在位置
- int p_pos = low;
- //采用第一个元素为轴
- int pivot = arr[p_pos];
-
- for (int i = low + 1; i <= height; i++) {
-
- if (arr[i] < pivot) {
-
- p_pos++;
-
- change(arr, p_pos, i);
-
- }
-
- }
-
- change(arr, low, p_pos);
-
- return p_pos;
-
- }
- /**
- * 实现快速排序
- * @param arr
- * @param low
- * @param high
- */
- public void quickSort(int arr[], int low, int high)
- {
- if(low < high)
- {
- int pivot = partition(arr, low, high);
- //System.out.println(pivot);
- quickSort(arr, low, pivot-1);
- quickSort(arr, pivot+1, high);
- }
- }
-
- }
复制代码 |