/**
* @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("");
}
}
分享到:
相关推荐
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer)。在这个Java实现中,我们将会探讨快速排序以及其变种——随机化快速排序。 1. **快速...
在本课程设计中,我们将使用 Java 语言对快速排序算法进行实现,并对算法的性能进行分析和比较。 快速排序算法的优点包括: * 高效的排序速度:快速排序算法的时间复杂度为 O(n log n),它是一种高效的排序算法,...
本篇文章将详细讲解标题中提到的六种常见排序算法的Java实现。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本...
基于Java按位拆分快速排序算法的基本思想是:首先根据数据中的比特对数据进行划分整理,将待排序列的每个数拆分成(≥2)个k位;然后按照数据由高到低每次截取k位的顺序,将待排序列分成个子序列,高k位相同的数据安排...
在Java中实现快速排序,通常会用到递归函数。以下是一个简化版的Java代码示例,展示了如何进行分区操作: ```java public class QuickSort { public static void quickSort(Comparable[] arr, int low, int high) ...
本文将详细介绍几种经典的排序算法,并提供Java语言的实现代码,包括冒泡排序、插入排序、选择排序和快速排序。这些算法不仅在面试中常被考察,而且在实际开发中也有广泛应用。 1. **冒泡排序(Bubble Sort)**: ...
### Java常用八大排序算法详解 #### 一、直接插入排序 **基本思想:** 直接插入排序的基本思路是在要排序的一组数中,假设前面 (n-1) [n>=2] 个数已经排好顺序,现在要把第 n 个数插入到前面的有序数列中,使得这 ...
这里我们主要探讨的是五种不同的排序算法:插入排序、选择排序、快速排序、希尔排序以及冒泡排序,它们都有对应的链表实现。让我们逐一深入理解这些算法。 1. 插入排序(Insertion Sort) 插入排序是一种简单直观...
冒泡排序、快速排序、直接插入排序、简单选择排序 等经典算法的思想介绍,大白话简单易懂。并用java实现。代码拿去即可用,不需做任何修改! 部分内容: /** * 快排:O(n*logn);如果是从小到大排序; * 思想:选...
快速排序(Quick Sort)是一种...通过以上内容,我们了解了Java中如何实现快速排序算法,包括其基本思想、步骤、Java代码示例以及时间空间复杂度分析。快速排序因其高效性和广泛的应用场景,在实际编程中经常被使用。
在Java编程语言中,排序算法是数据结构与算法学习中的重要组成部分。本实验通过生成大量随机数并写入文件,然后使用四种不同的排序算法进行排序,以比较它们的效率。以下是对这四种排序算法的详细解释: 1. **冒泡...
这里我们主要关注三种排序算法的Java实现:快速排序、桶排序以及插入排序。这三种算法各有特点,适用于不同的场景。 首先,快速排序(QuickSort)是由C.A.R. Hoare在1960年提出的,它是一种分治策略的典型应用。...
java代码实现的排序算法(冒泡,快速,简单选择,堆排,直接插入,希尔,归并),代码本身的注释不多,主要注释的还是当前排序算法的一些特点,比如时间复杂度,空间复杂度,一趟排序后数列的特点。适合了解算法性质...
本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort)这三种经典的排序算法,并探讨它们的原理、优缺点以及在实际应用中的选择。 **快速排序(Quick Sort)**...
// 实现快速排序算法 } } ``` 最后是归并排序: ```java public class MergeSortStrategy implements SortingStrategy { @Override public void sort(int[] array) { // 实现归并排序算法 } } ``` 为了能够...
本项目是一个小型的排序系统,其核心特点在于能够处理任意类型的数据,并且采用了五种不同的排序算法,包括冒泡排序、选择排序、插入排序、快速排序以及堆排序。下面将详细探讨这些知识点。 首先,**泛型**是Java...
"Java排序算法之堆排思想及代码实现" Java排序算法之堆排思想及代码实现是...Java排序算法之堆排思想及代码实现是基于堆积树(堆)这种数据结构所设计的一种排序算法,它可以快速地将一个无序数组排序成一个有序数组。
这里有三个主要的排序算法:归并排序、消除递归的归并排序和快速排序,它们都是在Java编程语言中实现的。让我们深入探讨这些算法及其Java实现。 1. **归并排序(Merge Sort)** 归并排序是一种基于分治思想的排序...
【Java编程中快速排序算法的实现】 快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小...