`
iwfy
  • 浏览: 36889 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

快速排序法1

J# 
阅读更多
方法1:
public class QuickSort {
int[] n ={45,99,69,29,28,27,26,2,10,3,24,23,9,8,25,85,33,40,78,98,54,7,69};
public static void main(String[] args) {
QuickSort q = new QuickSort();
q.out(q.n.length);
q.quickSort(0, q.n.length-1);
q.out(q.n.length);
}
/**
* 快速排序主循环体,主要利用一个可变数组list
* 把作为参考的基准数先放到list中,然后跟数组一段区间内的数
* 比较,大的放到list末尾,小的就放到这个基准数的左边
* @param i 数组区间的起始坐标
* @param j 数组区间的终止坐标
*/
public void quickSort(int i, int j){
int t = n[i];            //t 记录一个用来做参考的数
ArrayList<Integer> temp = new ArrayList<Integer>();
temp.add(t);
int length = j + 1 - i;  //记录i----j总共是多少个数字
int start = i++;            //记录i的起始坐标
int left = 0;          //给temp里面填数字时候的坐标,也就是小于t的数值的索引
int right = length -1;
/**
* 判断temp数组当前的左边left和右边坐标right是否重叠
* 如果重叠就表示区间内所有数据都按一定的顺序放到temp中
*/
while(left < right){        
if(t < n[j]){
    //将此数字加到末尾
temp.add(n[j]) ;
right--;
}else{
//在temp中放到t的前面
temp.add(left, n[j]);
left++;
}
if(left == right){
break;
}
if(t < n[i]){
temp.add(n[i]);
right--;
}else{
temp.add(left, n[i]);
left++;
}
i += 1;
j -= 1;
}
//到此时temp里面的顺序就排成了左边都小于t,右边都大于t
for(int k = 0; k < temp.size(); k++){
n[start + k] = temp.get(k);
}
//以t为分界线再分别对左边和右边进行划分,这样逐级进行最终将分成若干对最小的两个数值比较
//t的左边在原数组里的范围
if(left > 1){
quickSort(start, start + left -1);
}
//t的右边在原数组里的范围
if(left + 1 < length -1){
quickSort(start + left + 1, start + length -1); 
}
}
public void out(int j){
for(int i = 0; i < j; i++){
System.out.print(n[i] + " ");
}
System.out.println();
}
}
分享到:
评论

相关推荐

    快速排序法C语言详解

    1. 递归函数:快速排序的核心是递归调用。在快速排序函数中,需要对数组的子区间进行排序,直到子区间的长度为零或一,这时该区间就被认为是已经排序好的。 2. 交换函数:快速排序过程中需要交换数组元素的位置。...

    C经典算法之快速排序法(三)

    ### C经典算法之快速排序法(三) 在探讨快速排序法的过程中,我们已经了解到轴的选择对于算法效率至关重要。本文将介绍一种高效的轴选择方法,该方法来源于著名的算法书籍《Introduction to Algorithms》。通过...

    使用快速排序法对一维数组进行排序

    描述中的程序实现了快速排序法,可能是用一种编程语言如C++、Java或Python编写的,用于对一维数组进行排序。这种程序的实现一般包括上述的三个主要步骤,并可能包含优化措施,例如处理小数组时改用插入排序,或者...

    Java版快速排序法

    这是一个用Java语言实现的快速排序算法,快速排序算法是根据分冶思想去实现的。

    快速排序法 C++ 初学者代码

    快速排序法 C++ 初学者代码 简单的准确的

    快速排序法改进版

    在快速排序法基础上提供了一些改进,比基本的快速排序更方便简洁

    直接排序法,折半插入法,希尔排序法,快速排序法(c语言实现)

    直接排序法、折半插入法、希尔排序法和快速排序法是计算机科学中常见的排序算法,它们在数据处理和算法理解上都具有重要的地位。这些排序算法的C语言实现为初学者提供了很好的学习材料,特别是在VC++6.0环境下进行...

    java快速排序法

    清楚明确的代码书写,让你轻易学懂快速排序法

    快速排序法的C++代码

    ### 快速排序法的C++实现 #### 算法概述 快速排序是一种非常高效的排序算法,由英国计算机科学家托尼·霍尔于1960年提出。它的基本思想是采用分治策略来把一个序列分为较小的两部分,然后递归地对这两部分进行排序...

    快速排序法

    1. **选择枢轴元素(Pivot Selection)**:快速排序的关键在于选取一个合适的枢轴元素,它将数组分为两个子集。一种常见的方法是取数组的第一个元素作为枢轴,但更优的方法是随机选择或使用“三数取中”策略,即取首...

    Java的快速排序法

    1. **平均时间复杂度**:快速排序的平均时间复杂度为O(n log n),在大部分情况下性能优秀。 2. **原地排序**:快速排序不需要额外的存储空间,是原地排序算法。 3. **效率高**:在实际应用中,快速排序往往比其他O(n...

    java Document 快速排序法

    然而,标题中的"java Document 快速排序法"可能指的是在一个包含文档数据的结构(如数组)中实现快速排序,而不是直接在Document对象上操作。由于Document主要处理文本数据,我们通常不会直接在Document上进行数值...

    一个快速排序法的例子

    在描述中提到的“一个快速排序法的例子”是一个具体的应用场景,即生成1亿个随机数并使用快速排序算法对其进行排序,整个过程大约耗时26秒。这个时间可能因硬件性能、数据分布均匀性以及实现细节等因素而有所不同。...

    分治法快速排序算法QuickSort C++

    在提供的文件"QuickSort1"中,应该包含了具体的C++实现代码,通过阅读和理解这段代码,你可以更深入地了解快速排序的工作原理和C++编程技巧。注意查看其中的注释,这些注释可以帮助你理解每一步操作的目的和作用。...

    java 快速排序 折半查找的界面实现 (递归与分治法)

    快速排序和折半查找是两种在计算机科学中广泛使用的算法,尤其在数据处理和搜索操作中扮演着重要角色。在Java编程中,这两种算法都可以通过递归和分治策略进行实现,以提高效率和可读性。下面我们将深入探讨这两个...

    JAVA快速排序法.pdf

    在 JAVA 中,快速排序法可以通过两种方式实现:QuickSort1 和 QuickSort2。下面是对这两种方式的详细解释: QuickSort1 QuickSort1 是一种传统的快速排序法实现方式。它的主要思想是通过选择一个基准元素,将数组...

    快速排序法 程序 绝对原创

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治策略,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再...

    快速排序算法matlab

    1. **定义快速排序函数**: ```matlab function QuickSort = quicksort(data, x, y) if y - x &lt;= 1 return; % 基线条件 end pivot = data(x); % 选取第一个元素作为基准 i = x + 1; j = y; while true ...

    c++ 7 种排序.快速排序, 归并排序,插入排序,选择排序,起泡排序,堆排序,希尔排序

    1. **快速排序**:由C.A.R. Hoare提出的,采用分治策略。基本思想是选取一个基准元素,通过一趟排序将待排序序列分为两部分,一部分的所有元素都比另一部分的所有元素小,然后再对这两部分分别进行快速排序,整个...

    用JAVA语言实现的对数据的快速排序法

    根据给定文件中的标题、描述、标签以及部分内容,可以总结并提炼出以下关于“使用JAVA语言实现的对数据的快速排序法”的相关知识点: ### 一、知识点概述 #### 标题:用JAVA语言实现的对数据的快速排序法 - **主要...

Global site tag (gtag.js) - Google Analytics