快速排序示例-java
2015-04-26 19:02
176 查看
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+",");
}
}
}
/**
* 快速排序
* @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+",");
}
}
}
相关文章推荐
- Java实现对两个List快速去重并排序操作示例
- java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
- 快速和选择排序程序示例
- Java实现之快速排序
- 快速排序Java实现
- Java数据结构与算法:快速排序
- Java排序之【快速排序】
- java 快速排序,冒泡排序
- Java实现快速排序
- java 快速排序随机选择key
- [Java] 对象排序示例
- java(Merge) 实现归并排序,快速排序
- java 快速排序的思想及解释说明
- 快速排序的两种实现方式(Java)
- 【数据结构】-快速排序Java实现
- Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
- 快速排序quicksort-算法导论java实现
- 排序算法复习(Java实现): 插入,冒泡,选择,Shell,快速排序
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码