zoukankan      html  css  js  c++  java
  • 快速排序二

    在划分的基础上进行快速排序:

    思路:递归调用快速排序(recQuickSort(left,right))方法,pivot选取节点right的值(改进时可以将pivot设置为数据项最左端,最右端,和中间值的平均值)

    if(left<=right)

       return;

    else {
      int pivot = arr[right];
      int position = partitionIt(left, right, pivot);
      recQuickSort(left, position - 1);
      recQuickSort(position + 1, right);
    }

    源代码:

    package com.quickSort;

    public class ArrayIns {

    private int nElems;
    private int[] arr;

    public ArrayIns(int max) {
    arr = new int[max];
    nElems = 0;
    }

    public int size() {
    return nElems;
    }

    public void insert(int value) {
    arr[nElems++] = value;
    }

    public void display() {
    for (int i = 0; i < nElems; i++)
    System.out.print("the" + i + "Elem is " + arr[i] + " ");
    }

    public void quickSort() {
    recQuickSort(0, nElems - 1);
    }

    public void recQuickSort(int left, int right) {
    if (right - left <= 0)
    return;
    else {
    int pivot = arr[right];
    int position = partitionIt(left, right, pivot);
    recQuickSort(left, position - 1);
    recQuickSort(position + 1, right);
    }
    }

    public int partitionIt(int left, int right, int pivot) {
    int leftPtr = left - 1;
    int rightPtr = right;

    while (true) {
    while (leftPtr < right && arr[++leftPtr] < pivot)
    ;
    while (rightPtr > left && arr[--rightPtr] > pivot)
    ;
    if (leftPtr >= rightPtr)
    break;
    else
    swap(leftPtr, rightPtr);
    }
    swap(leftPtr, right);
    return leftPtr;
    }

    public void swap(int leftValue, int rightValue) {
    int temp;
    temp = arr[rightValue];
    arr[rightValue] = arr[leftValue];
    arr[leftValue] = temp;
    }
    }

    package com.quickSort;

    public class QuickSort1App {
    public static void main(String[] args){
    int maxSize = 10;
    ArrayIns arr = new ArrayIns(maxSize);

    for(int i=0;i<maxSize;i++){
    int n = (int)(Math.random() * 99);
    arr.insert(n);
    }
    arr.display();
    System.out.println();
    arr.quickSort();
    arr.display();
    }
    }

  • 相关阅读:
    Wpf 简单制作自己的窗体样式(2)
    Wpf 简单制作自己的窗体样式
    Microsoft Expression Blend 4制作简单的按钮
    Jest和enzyme 前端单元测试工具
    使用socket.io实现多房间通信聊天室
    如何快速开发一个微信小游戏--实例《打气球》
    使用flow来规范javascript的变量类型
    前端开发工具icestar
    vue.js和vue-router和vuex快速上手知识
    react.js插件开发,x-dailog弹窗浮层组件
  • 原文地址:https://www.cnblogs.com/xunmengyoufeng/p/2712828.html
Copyright © 2011-2022 走看看