`
JasonShieh
  • 浏览: 527593 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA实现快速排序算法(快排)

    博客分类:
  • JAVA
 
阅读更多
/**
 * @author : xxj
 * @date : 2012-7-24
 * @time : 下午8:13:13
 * @describe : 快速排序算法(JAVA)
 */

public class QuickSort {
	public static int[] quickSort(int[] numbers){
		if(numbers == null || numbers.length < 2){
			return numbers;
		}
		int i = 0;
		int j = numbers.length - 1;
		int temp;
		while(j != i){
			for(int m = j; m <= j && m >= i ; m --){
				j = m;
				if(numbers[i] > numbers[m]){
					temp = numbers[i];
					numbers[i] = numbers[m];
					numbers[m] = temp;
					break;
				}
			}
			if(i == j){
				break;
			}
			for(int n = i; n >= i && n <= j; n ++){
				i = n;
				if(numbers[j] < numbers[n]){
					temp = numbers[j];
					numbers[j] = numbers[n];
					numbers[n] = temp;
					break;
				}
			}
		}
		int[] numbersLeft = new int[i];
		for(int x = 0; x < i; x ++){
			numbersLeft[x] = numbers[x];
		}
		numbersLeft = quickSort(numbersLeft);
		for(int x = 0; x < i; x ++){
			numbers[x] = numbersLeft[x];
		}
		
		int[] numbersRight = new int[numbers.length - i - 1];
		for(int x = 0; x < numbers.length - i - 1; x ++){
			numbersRight[x] = numbers[i + x + 1];
		}
		numbersRight = quickSort(numbersRight);
		for(int x = i + 1; x < numbers.length; x ++){
			numbers[x] = numbersRight[x - i - 1];
		}
		return numbers;
	}
	
	public static void main(String[] args) {
//		printArray(quickSort(new int[]{49,38,65,97,76,13,27}));
		printArray(quickSort(new int[]{429,318,625,197,176,213,327}));
	}
	
	public static void printArray(int[] numbers){
		for(int i = 0; i < numbers.length; i ++){
			System.out.print(numbers[i] + " ");
		}
		System.out.println("");
	}
}
分享到:
评论
1 楼 zhoulujun007 2015-05-07  
尼玛,算法验证不正确  176, 197, 197, 197, 327, 429, 625

相关推荐

    Java实现的快速排序和随机快排

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer)。在这个Java实现中,我们将会探讨快速排序以及其变种——随机化快速排序。 1. **快速...

    算法课程设计——分治法(java实现)

    在本课程设计中,我们将使用 Java 语言对快速排序算法进行实现,并对算法的性能进行分析和比较。 快速排序算法的优点包括: * 高效的排序速度:快速排序算法的时间复杂度为 O(n log n),它是一种高效的排序算法,...

    常用排序算法的java实现(冒泡、插入、选择、希尔、归并、快排)

    本篇文章将详细讲解标题中提到的六种常见排序算法的Java实现。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本...

    基于Java按位拆分快速排序算法的数值仿真.pdf

    基于Java按位拆分快速排序算法的基本思想是:首先根据数据中的比特对数据进行划分整理,将待排序列的每个数拆分成(≥2)个k位;然后按照数据由高到低每次截取k位的顺序,将待排序列分成个子序列,高k位相同的数据安排...

    快排算法java

    在Java中实现快速排序,通常会用到递归函数。以下是一个简化版的Java代码示例,展示了如何进行分区操作: ```java public class QuickSort { public static void quickSort(Comparable[] arr, int low, int high) ...

    IT面试笔试-各种排序算法Java实现

    本文将详细介绍几种经典的排序算法,并提供Java语言的实现代码,包括冒泡排序、插入排序、选择排序和快速排序。这些算法不仅在面试中常被考察,而且在实际开发中也有广泛应用。 1. **冒泡排序(Bubble Sort)**: ...

    Java常用8大排序算法

    ### Java常用八大排序算法详解 #### 一、直接插入排序 **基本思想:** 直接插入排序的基本思路是在要排序的一组数中,假设前面 (n-1) [n&gt;=2] 个数已经排好顺序,现在要把第 n 个数插入到前面的有序数列中,使得这 ...

    插入,选择排序的链表实现及快速,希尔,冒泡排序算法实现合集

    这里我们主要探讨的是五种不同的排序算法:插入排序、选择排序、快速排序、希尔排序以及冒泡排序,它们都有对应的链表实现。让我们逐一深入理解这些算法。 1. 插入排序(Insertion Sort) 插入排序是一种简单直观...

    几种经典的排序算法java实现

    冒泡排序、快速排序、直接插入排序、简单选择排序 等经典算法的思想介绍,大白话简单易懂。并用java实现。代码拿去即可用,不需做任何修改! 部分内容: /** * 快排:O(n*logn);如果是从小到大排序; * 思想:选...

    java编写的快排算法

    快速排序(Quick Sort)是一种...通过以上内容,我们了解了Java中如何实现快速排序算法,包括其基本思想、步骤、Java代码示例以及时间空间复杂度分析。快速排序因其高效性和广泛的应用场景,在实际编程中经常被使用。

    java排序算法效率比较

    在Java编程语言中,排序算法是数据结构与算法学习中的重要组成部分。本实验通过生成大量随机数并写入文件,然后使用四种不同的排序算法进行排序,以比较它们的效率。以下是对这四种排序算法的详细解释: 1. **冒泡...

    三种排序算法java实现

    这里我们主要关注三种排序算法的Java实现:快速排序、桶排序以及插入排序。这三种算法各有特点,适用于不同的场景。 首先,快速排序(QuickSort)是由C.A.R. Hoare在1960年提出的,它是一种分治策略的典型应用。...

    java代码实现的排序算法

    java代码实现的排序算法(冒泡,快速,简单选择,堆排,直接插入,希尔,归并),代码本身的注释不多,主要注释的还是当前排序算法的一些特点,比如时间复杂度,空间复杂度,一趟排序后数列的特点。适合了解算法性质...

    Java ArrayList实现的快排,归并排序,堆排序

    本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort)这三种经典的排序算法,并探讨它们的原理、优缺点以及在实际应用中的选择。 **快速排序(Quick Sort)**...

    策略模式 java 实现冒泡、快排、归并三种算法

    // 实现快速排序算法 } } ``` 最后是归并排序: ```java public class MergeSortStrategy implements SortingStrategy { @Override public void sort(int[] array) { // 实现归并排序算法 } } ``` 为了能够...

    采用各种排序算法,支持任意类型数据的小型排序系统

    本项目是一个小型的排序系统,其核心特点在于能够处理任意类型的数据,并且采用了五种不同的排序算法,包括冒泡排序、选择排序、插入排序、快速排序以及堆排序。下面将详细探讨这些知识点。 首先,**泛型**是Java...

    Java排序算法之堆排思想及代码实现

    "Java排序算法之堆排思想及代码实现" Java排序算法之堆排思想及代码实现是...Java排序算法之堆排思想及代码实现是基于堆积树(堆)这种数据结构所设计的一种排序算法,它可以快速地将一个无序数组排序成一个有序数组。

    归并排序,消除递归归并排序,快排,Java实现

    这里有三个主要的排序算法:归并排序、消除递归的归并排序和快速排序,它们都是在Java编程语言中实现的。让我们深入探讨这些算法及其Java实现。 1. **归并排序(Merge Sort)** 归并排序是一种基于分治思想的排序...

    Java编程中快速排序算法的实现及相关算法优化

    【Java编程中快速排序算法的实现】 快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小...

Global site tag (gtag.js) - Google Analytics