测试代码:
package com.zlpy.quicksort;
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
int[] r={48,62,35,77,43,55,14,98,24};
//排序前输出
QuickSort.print(r);
sort(r,0,r.length-1);
//排序后输出
QuickSort.print(r);
}
public static void sort(int[] r,int left,int right){
if(left<right){
int pos = QuickSort.quickSort(r, left, right);
sort(r, left, pos-1);
sort(r,pos+1,right);
}
}
}
算法代码:
package com.zlpy.quicksort;
public class QuickSort {
/*一趟快速排序的算法*/
public static int quickSort(int[] r,int left,int right){
int low=left;
int high=right;
int x=r[low];
while(low<high){
while(low<high && x<r[high]){
high--;
}
if(low<high){
r[low]=r[high];
low++;
}
while(low<high && x>r[low]){
low++;
}
if(low<high){
r[high]=r[low];
high--;
}
}
r[low]=x;
return low;
}
public static void print(int[] r){
String str = "";
for(int i=0;i<r.length;i++){
str+=r[i]+" ";
}
System.out.println(str);
}
}
分享到:
相关推荐
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer)。在这个系列中,我们将通过算法可视化来深入理解快速排序的工作原理。 快速排序的步骤...
在本课程设计中,我们将使用 Java 语言对快速排序算法进行实现,并对算法的性能进行分析和比较。 快速排序算法的优点包括: * 高效的排序速度:快速排序算法的时间复杂度为 O(n log n),它是一种高效的排序算法,...
1. 排序算法:包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,理解每种排序算法的工作原理和时间复杂度是至关重要的。 2. 搜索算法:线性搜索、二分搜索、深度优先搜索(DFS)、广度优先搜索...
- 在实际编程中,更高效的排序算法如快速排序、归并排序等更为常用。 在`AlgorithmBubleSort.java`中,我们还可以探讨代码的可读性、空间复杂度以及可能的优化措施,例如使用双指针法减少不必要的比较。这些都将是...
**选择排序**是一种简单直观的排序算法,它的工作原理如下:...在实际应用中,更高效的排序算法如快速排序、归并排序或堆排序等通常会优先考虑。然而,对于教学和理解排序算法的基本原理,选择排序是一个很好的起点。
快速排序 * 1.i=left,j=right,将基准数挖出形成第一个坑a[i]; * 2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]; * 3.i++由前向后找比它大的数,找到后挖出此数填到前一个坑a[j]中 * 4.以i为中线,...
希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一定的间隔进行分组,然后对每组进行插入排序,随着间隔逐渐缩小,最后进行一次全排列,...
(1)数据结构与算法概念...(15)排序算法(五)——快速排序 (16)排序算法(六)——希尔排序 (17)排序算法(七)——堆排序 (18)排序算法(八)——基数排序 (19)排序算法(九)——八大排序算法总结
根据给定的文件信息,我们将深入探讨两种经典的排序算法——快速排序和归并排序,并结合Java语言实现进行详细解析。 ### 快速排序算法 快速排序是一种高效的排序算法,采用分而治之的策略,其核心思想是选择一个...
归并排序算法-java 实现 在计算机科学中,排序算法是指将一组无序的数据按照某种规则排列成有序的数据。归并排序(Merge Sort)是一种常用的排序算法,属于分治算法的范畴。下面将详细介绍归并排序算法的java实现。...
以下是根据标题和描述中提到的四种排序算法——冒泡排序、快速排序、插入排序和选择排序的详细说明。 **冒泡排序(BuddleSort)**: 冒泡排序是一种简单的交换排序,它通过重复遍历待排序的列表,比较相邻元素并...
- 排序算法:如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等,每种排序算法都有其适用场景和优缺点。 - 搜索算法:如线性搜索、二分搜索、哈希搜索等,它们在数据查找中起着关键作用。 - 图算法...
这篇实验报告将深入探讨两种经典的排序算法——快速排序和归并排序,通过对它们在Java环境中的实现和性能测试,揭示它们在处理不同规模数据时的效率差异。 **快速排序(Quick Sort)** 快速排序由C.A.R. Hoare在...
首先,我们来看看基础的排序算法——冒泡排序。冒泡排序是最简单的交换排序,通过重复遍历待排序的数列,依次比较相邻元素并根据需要交换它们的位置,直到没有任何一对数字需要交换为止。虽然效率较低,但它对于理解...
以上介绍了三种基本的排序算法——插入排序、冒泡排序和选择排序。虽然它们在处理小规模数据集时表现良好,但在大规模数据集面前,这些算法的性能通常不如更高效的算法,如快速排序、归并排序等。然而,了解这些基础...
这些算法虽然在复杂度上不如高级排序算法如快速排序或归并排序,但它们提供了基础的排序逻辑,有助于理解更复杂的算法思想。 首先,我们来详细讲解插入排序(Insertion Sort)。插入排序的工作原理类似于我们手动...
标题 "各种排序算法java实现" 涉及到的是计算机科学中的一个重要领域——算法,特别是排序算法在Java编程语言中的具体应用。排序算法是数据结构与算法分析中的基础部分,它们用于将一组数据按照特定顺序排列。在这个...
常见的排序算法有八种,即选择排序、冒泡排序、插入排序、归并排序、快速排序、堆排序、.radix 排序和基数排序。 一、分类 内部排序和外部排序是两种基本的排序分类。内部排序是指待排序记录存放在计算机随机...
### Java中的排序算法详解 #### 一、排序算法的分类 根据给定文件中的描述,Java中的排序算法大致可以分为以下几类: 1. **插入排序**:包括直接插入排序、折半插入排序、希尔排序等。 2. **交换排序**:主要包括...