排序算法
来源:互联网 发布:电脑桌面制作软件 编辑:程序博客网 时间:2024/06/05 08:48
一:直接插入法
//升序
public static int[] insertSort(int[] source){
int tmp=0;
for(int i=1;i<source.length;i++){
if(source[i]<source[i-1]){
tmp=source[i]; int j=i-1;
do{
source[j+1]=source[j];
j--;
}while(j>=0 && tmp<source[j]);
source[j+1]=tmp;
}
}
return source;
}
//倒序
int tmp=0;
for(int i=1;i<source.length;i++){
if(source[i]>source[i-1]){
tmp=source[i]; int j=i-1;
do{
source[j+1]=source[j];
j--;
}while(j>=0 && tmp>source[j]);
source[j+1]=tmp;
}
二:快速排序
/***
* 随机化分
* @param source
* @param low
* @param high
* @return
*/
private static int randomizedPartition(int[] source,int low,int high){
int k;
k=getRandom(low,high);
int tmp=source[low];
source[low]=source[high];
source[high]=tmp;
return partition(source,low,high);
}
private static int partition(int[] source,int low,int high){
int pivot=source[low];
while(low<high){
while(low<high && source[high]>=pivot)
high--;
if(low<high)
source[low++]=source[high];
while(low<high && source[low]<=pivot)
low++;
if(low<high)
source[high--]=source[low];
}
source[low]=pivot;
return low;
}
/***
* 快速排序
* @param source
* @param low
* @param high
*/
private static void quickSort(int[] source,int low,int high){
int pivotPos;
if(low<high){
pivotPos=partition(source,low,high);
quickSort(source,low,pivotPos-1);
quickSort(source,pivotPos+1,high);
}
}
/***
* 随机快速排序
* @param source
* @param low
* @param high
*/
public static void randomizedQuickSort(int[] source,int low,int high){
int pivotPos;
if(low<high){
pivotPos=randomizedPartition(source,low,high);
quickSort(source,low,pivotPos-1);
quickSort(source,pivotPos+1,high);
}
}
/***
* return >= start && <=end 的随机数 ,end需大于start 否则返回-1
* @param start
* @param end
* @return
*/
public static int getRandom(int start,int end){
if(start>end || start <0 || end <0){
return -1;
}
return (int)(Math.random()*(end-start+1))+start;
}
}
return source;
}
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- View类详解
- JAVA对象序列化保存为XML文件的工具类
- linux内存分配函数
- 2011.10.23 poj1423Big Number 伪解题报告
- 网上找的c语言读取配置文件
- 排序算法
- 破解 bytescout Barcode SDK (2.2.0.343)
- 深入C(关键字)四五六
- NS-3 简介
- 深入C(关键字)七八
- 分享一个java正则验证类
- Ubuntu 下gcc编程入门
- 内存的分区
- apache 下载 地址