快速排序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 ...
随机推荐
- java大数处理
比较两个数大小 import java.math.*; import java.util.*; public class Main { public static void main(String[] ...
- Facial Landmark Detection
源地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 OCTOBER 18, 2015 BY SAT ...
- [Android学习笔记]获取view的尺寸和坐标
对于UI方面很多时候需要获取它的很多信息,具体情况见view的文档 View文档 http://developer.android.com/training/index.html 常用方法:获取vie ...
- POJ2828 Buy Tickets 【线段树】+【单点更新】+【逆序】
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 12296 Accepted: 6071 Desc ...
- filter与servlet对照
最近在开java物自,还记得刚开始使用servlet这是一个调试ajax什么时候,然后,我不知道怎么用,你知道写的路径来调用,总是提示404错,,到最后自己一点点的调通了,知道servlet是须要se ...
- ASA基本配置
拓扑如下: ASA5520# show running-config : Saved:ASA Version 8.0(2) !hostname ASA5520enable password 2KFQn ...
- [品质生活] 舒适 Schick HYDRO 5剃须刀
[品质生活] 舒适 Schick HYDRO 5剃须刀 [品质生活] 舒适 Schick HYDRO 5剃须刀
- poj2253(最短路小变形)
题目连接:http://poj.org/problem?id=2253 题意:给出一个无向图,求一条1~2的路径使得路径上的最大边权最小. 分析:dij将距离更新改成取最大值即可,即dp[i]表示到达 ...
- 使用python向Redis批量导入数据
1.使用pipeline进行批量导入数据.包含先使用rpush插入数据,然后使用expire改动过期时间 class Redis_Handler(Handler): def connect(self) ...
- 【C++】动态开辟二维数组
二维数组在内存中的分配例如以下: C方式呈现: <span style="font-size:18px;"> #include <iostream> usi ...