高速排序java语言实现

本博客不再更新,很多其它精彩内容请訪问我的独立博客

高速排序是非常重要的排序算法,可是我在学的时候发现网上没有特别好的样例所以自己动手写了一个。

自己动手丰衣足食。

package sort;

import java.util.Random;

public class QuickSort {
	@SuppressWarnings("unused")
	public boolean initTestArray(int[] testArray) {// 初始化testArray
		if (testArray == null)
			return false;
		Random random = new Random();
		for (int i = 0; i < testArray.length; i++) {
			testArray[i] = random.nextInt(200);
		}
		return true;
	}

	public boolean printTestArray(int[] testArray) {// 打印testArray中的内容
		if (testArray == null)
			return false;
		for (int i = 0; i < testArray.length; i++) {
			System.out.print(testArray[i] + ",");
		}
		System.out.println();
		return true;
	}

	public static boolean quickSort(int[] testArray, int left, int right) {
		if(testArray==null)
			return false;
		if (left < right) {
			int pivotpos = QuickSort.partition(testArray, left, right);
			QuickSort.quickSort(testArray, left, pivotpos - 1);
			QuickSort.quickSort(testArray, pivotpos + 1, right);
		}
		return true;
	}

	public static int partition(int[] testArray, int low, int high) {
		int i = low, j = high, pivot = testArray[low],temp=0;
		while (i < j) {
			while (i < j && testArray[j] >= pivot)
				j--;
			while (i < j && testArray[i] <= pivot)
				i++;
			temp = testArray[i];
			testArray[i] = testArray[j];
			testArray[j] = temp;
		}
		testArray[low] = testArray[i];
		testArray[i] = pivot;
		return i;
	}

	public static void main(String args[]) {
		int[] testArray = new int[20];
		QuickSort quickSort = new QuickSort();
		quickSort.initTestArray(testArray);
		System.out.println("排序前:");
		quickSort.printTestArray(testArray);
		if(!QuickSort.quickSort(testArray, 0, testArray.length - 1))
			System.out.println("排序出错!

");
		System.out.println("排序后:");
		quickSort.printTestArray(testArray);
	}
}
时间: 2024-11-09 16:40:53

高速排序java语言实现的相关文章

选择排序java语言实现

1 class demo 2 { 3 public static void main(String[] args) 4 { 5 int[] arr={1,4,2,6,8,9,0,5,3,2,2,4,4,6,7,8}; 6 for (int i=0;i<arr.length-1;i++) { 7 for (int j=i+1;j<arr.length ;j++ ) { 8 int temp; 9 if (arr[i]>arr[j]) { 10 temp=arr[i]; 11 arr[i]=

高速排序(Java版)

package com.love.test; import java.util.Scanner; /** * @author huowolf *高速排序实现 *快排是十分优秀的排序算法. *核心:分治法(1.选基元2.分区3.递归子列) */ public class QuickSort { public static void quickSort(int[] arr,int start ,int end) { if(start<end) { int i=start, j=end, x=arr[

[java学习笔记]java语言基础概述之数组的定义&amp;常见操作(遍历、排序、查找)&amp;二维数组

1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一旦创建,必须明确长度)          格式1:              元素类型   [ ]  数组名  =  new  元素类型  [元素个数即数组的长度]:              示例:int[] array = new int[5];          格式2:           

排序算法之高速排序(Java)

//高速排序 public class Quick_Sort { // 排序的主要算法 private int Partition(int[] data, int start, int end) { int mid_data = data[end];// 选取最后最个数作为中间值哨兵,从開始进行遍历,每一个数与之比較 int index = start; // 记录比哨兵小的数字在左端的位置或个数 // 注意要考虑start = 0的情况,和<算法导论>中的伪码有差别 for (int i =

java语言基础一

1 计算机基础知识 1.1 计算机 计算机,全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称为裸机. 计算机常见的形式: 台式计算机 笔记本计算机 大型计算机等. 计算机的应用已经渗透到社会的各个领域,正在改变着人们的工作.学习和生活的方式,推动的社会的发展.计算机的应用主要由如下的几个方面: 科学计算,也称为数值计算.计算机最开始是为了解决科学研究和工程设计中遇到的大量数学问题的数值计算而研制的计算工

java语言编程基础

java语言基本要素 高级语言如c++.c#.java等都有一些共同性的东西:关键字.标识符. 运算符.注释.数据类型.常量和变量.语句.函数.数组.高级语言在这些要素上大同小异. Java关键字:一些有特定含义,有专门用途的字符串(keyword).Java中关键字均为小写.如do while if int等.不需要记,用多了自然会知道. 标识符 自定义的名称.如类名.变量名.方法名等.合法标识符规则:1 不可使用关键子字 2 不能以数字开头.在java中标识符可有26个英文大小写字母.数字0

Java语言程序设计 上机实验4 掌握声明接口、一个类实现接口的声明和使用方法

Java语言程序设计 上机实验4 实验目的: 理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口.一个类实现接口的声明和使用方法:熟悉Java语言包和实用包中的常用类. 实验内容:(*)为选做 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积. 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断

算法笔记_216:第六届蓝桥杯软件类校赛部分真题(Java语言C组)

目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 二项式的系数规律,我国数学家很早就发现了. 如[图1.png],我国南宋数学家杨辉1261年所著的<详解九章算法>一书里就出现了. 其排列规律: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 如下的程序,用来建立N行的杨辉三角形.请填写划线部分缺少的代码.

Java语言基础

目录 一.Java程序预览 1.1.Hello World 1.2.Eclipse使用 1.2.1.项目位置 1.2.2.重置窗口布局 1.2.3.设置字体 1.2.4.修改控制台字体 1.2.4.项目的导入与保存 1.2.5.修改快捷键 1.2.6.重命名 1.2.7.编码 1.2.8.设置JDK本地JavaDOC API路径及源码路径 1.3.快捷键 1.3.1.Eclipse快捷键大全 1.4.调试(debug) 1.4.1.设置断点 1.4.2.启动调试 1.4.3.执行调试 二.类型