java中的几个排序
来源:互联网 发布:大数据产业上市公司 编辑:程序博客网 时间:2024/05/01 20:21
//冒泡排序
public static int[] bubble(int array[]){
int arr[] = array.clone();
for(int i=0;i<arr.length;i++)
for(int j=arr.length-1;j>i;j--)
if(arr[i]>arr[j])
swap(arr,i,j);
return arr;
}
//选择排序
public static int[] select(int array[]){
int arr[] = array.clone();
for(int i=0,k=0;i<arr.length;i++){
k = i;
for(int j=arr.length-1;j>i;j--)
if(arr[k]>arr[j])
k = j;
swap(arr,i,k);
}
return arr;
}
//插入排序
public static int[] insert(int array[]){
int arr[] = array.clone();
for(int i=0;i<arr.length;i++)
for(int j=i;j>0;j--)
if(arr[j]<arr[j-1])
swap(arr,j,j-1);
else
break;
return arr;
}
//归并排序
public static int[] merge(int array[]){
int arr[] = array.clone();
mergeSort(arr,0,arr.length-1,new int[arr.length]);
return arr;
}
private static void mergeSort(int arr[],int start,int end,int temp[]){
if(start>=end)
return;
int middle = start+(end-start)/2;
mergeSort(arr,start,middle,temp);
mergeSort(arr,middle+1,end,temp);
for(int i=start,j=start,k=middle+1;i<=end;i++)
if(j<=middle && k<=end)
if(arr[j]>arr[k])
temp[i] = arr[k++];
else
temp[i] = arr[j++];
else if(j<=middle)
temp[i] = arr[j++];
else if(k<=end)
temp[i] = arr[k++];
for(int i=start;i<=end;i++)
arr[i] = temp[i];
}
//Shell排序
public static int[] shell(int array[]){
int arr[] = array.clone();
int len = 1;
while(len<arr.length/3)
len = len*3+1;
for(;len>0;len=(len-1)/3)
for(int i=len;i<arr.length;i++)
for(int j=i;j>=len;j-=len)
if(arr[j]<arr[j-len])
swap(arr,j,j-len);
else
break;
return arr;
}
//快速排序
public static int[] quick(int array[]){
int arr[] = array.clone();
quickSort(arr,0,arr.length-1);
return arr;
}
private static void quickSort(int arr[],int start,int end){
if(start>=end)
return;
int partition = arr[end],s = start-1,e = end;
while(true){
while(arr[++s]<partition);
while(e>0 && arr[--e]>partition);
if(s>=e)
break;
swap(arr,s,e);
}
swap(arr,s,end);
quickSort(arr,start,s-1);
quickSort(arr,s+1,end);
}
private static void swap(int arr[],int i,int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
- java中的几个排序
- JAVA中的几个排序算法
- 黑马程序员--java中的几个简单排序
- java中的几个概念
- java中的几个关键字
- Java中的几个HashMap
- Java中的几个HashMap
- java中的几个关键字
- Java 常见 几个排序算法
- java中的几个集合类
- java面试中的几个比较
- java 中的几个小问题
- Java中的几个集合类
- Java中泛型中的几个符号
- java中的几个“区别”总结
- Java 入门中的几个基本概念
- Java中的几个集合类
- java中的几个集合类
- 定语从句的翻译
- 中国互联网十五年的22个创新模式
- 标准流
- [C++] 解释一下m_pfnCreateObject
- 項目管理經驗一點談
- java中的几个排序
- bat批处理文件
- oracle函数手册
- mysql数据库中文乱码问题的解决
- cadence安装步骤
- linux下用openssl获取数据文件摘要(C源码)
- 程序人生:给你讲十个特别有哲理的故事
- 解决VMWare中FreeBSD时间同步问题
- 程序员真实写真35岁前成功的12条黄金法则