快速排序示例-java

package Quicksort;

/**
* 快速排序
* @author Administrator
*
*/
public class TestMain
{
/**
*
* @param start 开始位置
* @param end 结束位置
*/
public static void sortArray(int[] array,int start,int end)
{
if(start >= end)
{
return ;
}
int startIndex = start;
int endIndex = end;
while(startIndex<endIndex)
{
/**从endIndex向前直到找到一个比当前小的元素,然后交换位置**/
while(startIndex<endIndex && array[startIndex]<=array[endIndex])
{
endIndex--;
}
exchange(array,startIndex,endIndex);
/**从endIndex向后直到找到一个比当前大的元素,然后交换位置**/
while(startIndex<endIndex && array[startIndex]<=array[endIndex])
{
endIndex--;
}
exchange(array,startIndex,endIndex);
}
//递归前一个数组
sortArray(array,start,startIndex-1);
//递归后一个数组
sortArray(array,startIndex+1,end);
}

/****/
public static void exchange(int[] array,int source,int target)
{
int temp = array[source];
array[source] = array[target];
array[target] = temp;
}

public static void main(String[] args)
{
int[] testArray = {19,4,2,10,18,29,14,14,13,12,18,17};
sortArray(testArray,0,testArray.length-1);
for(int i:testArray)
{
System.out.print(i+",");
}
}
}

时间: 2024-12-11 17:30:59

快速排序示例-java的相关文章

快速排序的Java实现

快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 下面是快速排序的Java实现: package com.newtouch.data.sort; import com.newtouch.data.test.SortTes

算法笔记_015:快速排序(Java)

目录 1 问题描述 2 解决方案 2.1 快速排序原理简介 2.2 具体编码 1 问题描述 给定一组数据,使用快速排序得到这组数据的非降序排列. 2 解决方案 2.1 快速排序原理简介 引用自百度百科: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行

随手编程---快速排序(QuickSort)-Java实现

背景 快速排序,是在上世纪60年代,由美国人东尼·霍尔提出的一种排序方法.这种排序方式,在当时已经是非常快的一种排序了.因此在命名上,才将之称为“快速排序”.这个算法是二十世纪的七大算法之一,平均情况下时间复杂度为Ο(nlogn),而且在O(nlogn)的情况下,实际的运算速度都要快于其他同时间复杂度的排序方法. 对东尼·霍尔以及快速排序的提出背景感兴趣的同学,可以看看这篇介绍:http://www.nowamagic.net/librarys/veda/detail/2391 排序思想 快速排

快速排序算法--java

快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置.递归快速排序,将其他n-1个元素也调整到排序后的正确位置.最后每个元素都是在排序后的正 确位置,排序完成.所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归. 举例说明一下吧,这个可能不是太好理解.假设要排序的序列为 2 2 4 9 3 6 7 1 

快速排序(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实现)

快速排序也是一种分治的排序算法.快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序,会需要一个额外的数组:而快速排序的排序方式是当两个子数组都有序时,整个数组就自然有序了,快速排序可以不产生额外的数组. 对于小数组(N<=20),快速排序不如插入排序.所以,小数组建议使用其他排序. 快速排序可以由以下几步组成: 1.如果数组S中的元素个数是0或1,则返回. 2.取S中任一元素v,称为枢纽元. 3.将S中其余元素(除枢纽元)分为两部分,一部分是小

冒泡、插入、归并、堆排序、快速排序的Java实现代码

详细课程就不表了,看代码吧 1 import java.util.Arrays; 2 3 public class Sort { 4 5 6 static int swapTimes=0; 7 public static void main(String[] args) { 8 int[] numbers = { 7, 6, 5, 3, 1, 8, 9, 7, 1, 2 ,5}; 9 //*** BubbleSort Test *** 10 //bubbleSort(numbers); 11 1

交换排序(冒泡排序、快速排序)——Java

交换排序 (1)冒泡排序 1.基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换. 2.实例 3.java实现 public static void main(String[] args) { int []nums={57,68,59,52}; bubblesort1(nums); } /** * 它重复地遍历过要排序的数列,一次比较两个元素

Appium入门示例(Java)

一.环境准备: 见我另一篇文章:http://www.cnblogs.com/puresoul/p/4696638.html 二.使用Eclipse直接创建案例工程 1.打开Eclipse,[File]-->[New]-->[Project] 2.选择[Java Project]-->[Next] 3.输入工程名称Appium_demo,点击[Finish] 4.右键点击工程 New-Folder,新建两个文件夹:apps和libs,目录结构如下:   三.导入测试的类库 1.导入Sel