快速排序java
快速排序(Quicksort)是对冒泡排序的一种改进。它是先在数组中找到一个关键数,第一趟排序将比关键数小的放在它的左边,比关键数大的放在它的右边。当第一趟排序结束后,再依次递归将左边和右边的进行排序,直到最后整个数组都有序为止。
一趟快速排序的算法是:

package com.dxx.order;
public class QuicSort {
public int[] sortArrs(int []arrs,int low,int high){
int l = low;
int h = high;
int povit = arrs[low];
//当l<h时,继续递归排序,当l=h时,说明已经一趟排序成功,退出
while(l<h){
//关键点和右边的h位数比较,如果小于右边h位的数,则h-1,即右边的标志左移一位
while(l<h && arrs[h]>povit)
h--;
if(l<h){
//当关键点大于h标志位的数时,交换两数的位置,l++,将关键点和左边l标志位的数比较
int temp = arrs[l];
arrs[l] = arrs[h];
arrs[h] = temp;
l++;
}
//反过来,将关键数与左边的数进行比较
while(l<h && arrs[l]<povit)
l++;
if(l<h){
//当关键点小于l标志位的数时,交换两数的位置,h--,当l=h时一趟排序结束
int temp = arrs[l];
arrs[l] = arrs[h];
arrs[h] = temp;
h--;
}
}
if(l>low)sortArrs(arrs, low, l-1);
if(h<high)sortArrs(arrs, h+1, high);
return arrs;
}
public void printArrs(int []arrs){
for(int i :arrs){
System.out.print(i + " ");
}
System.out.println();
}
}
主程序运行类:
package com.dxx.order;
public class MainTest {
public static void main(String[] args) {
int arrs[] = {14,3,2,5,12,8,6,7,10,11,1,9,13};
QuicSort quicSort = new QuicSort();
quicSort.printArrs(arrs);
arrs = quicSort.sortArrs(arrs,0,arrs.length-1);
quicSort.printArrs(arrs);
}
}
快速排序java的更多相关文章
- 快速排序 Java实现的快速排序
快速排序 Java实现的快速排序: package xc; import java.util.Arrays; import java.util.Random; /** * * @author dax ...
- 基本排序算法——快速排序java实现
简单的快速排序算法,我竟然花费了如此多的时间来写作,好好学习. /** * */ package basic.sort; import java.util.Arrays; import java.ut ...
- 排序算法----快速排序java
快速排序是对冒泡排序的一种改进,平均时间复杂度是O(nlogn) import java.util.Arrays; import java.util.Scanner; public class tes ...
- 快速排序 java详解
1.快速排序简介: 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此 ...
- ADV-297 快速排序 java
问题描述 用递归来实现快速排序(quick sort)算法.快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x.首先对数组中的元素进行调整,使x放在正确的位置上.同时,所有比x小 ...
- 快速排序-java
排序-快速排序 基本思想: 将数据划分为两部分,左边的所有元素都小于右边的所有元素:然后,对左右两边进行快速排序. 划分方法: 选定一个参考点(中间元素),所有元素与之相比较,小的放左边,大的放右边. ...
- 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...
- 排序算法之快速排序(java实现)
package com.javaTest300; public class Test039 { public static void main(String[] args) {// 快速排序 int ...
- 快速排序Java实现
package practice; import edu.princeton.cs.algs4.*; public class TestMain { public static void main(S ...
随机推荐
- NET Core RC2
.NET Core RC2/RTM 明确了时间表 .NET Core 经过了将近2年的开发,去年12月份发布的RC1版本,明确来说那只是一个beta版本,自从RC1发布以来,看到github里的RC2 ...
- The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
出现 The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the j ...
- IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置
原文:IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置 站点--右键属性--http头 ...
- Installing SSL on CentOS | My Virtual Time Capsule
Installing SSL on CentOS | My Virtual Time Capsule Installing SSL on CentOS Extracted from the Sourc ...
- Java程序猿面试题集(181- 199)
Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181. 182. 183. 184. 185. 186. 1 ...
- java泛型 之 入门(interface)
一:泛型简单介绍: (1)所谓泛型,就是变量类型的參数化. 泛型是JDK1.5中一个最重要的特征.通过引入泛型,我们将获得编译时类型的安全和执行时更小的抛出ClassCastException的可能. ...
- 《C/C++专项练习》 — (3)
序 第三次C/C++专项.嗯,要抗住打击,继续加油~ 错题分析与总结 1 . 在64位系统中.有例如以下类: class A { public: void *p1; private: void *p2 ...
- 基于FP-Tree的关联规则FP-Growth推荐算法Java实现
基于FP-Tree的关联规则FP-Growth推荐算法Java实现 package edu.test.ch8; import java.util.ArrayList; import java.util ...
- SE 2014年3月31日
一. 描述OSPF划分区域的优势. OSPF划分区域的优势主要表现在以下几个方面: 1. 当网络中路由器的数量增大时,划分区域有利于减轻一部分性能较低的设备的处理和维护LSA数据库. 2. 区域的划分 ...
- HYSBZ 1036(树链剖分)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28982#problem/E 题意:给定一棵树及树上的点权,要求三种操作: 1) ...