首页 > 应用开发 > Java > AJPFX关于java数组排序
/**
*将数组中的两个指定下标的元素交换位置
*@param arr 要交换元素的数组引用地址值
*@param a 数组索引
*@param b 数组索引
*/
private static void swap(int[] arr,int a,int b){
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
/**
*冒泡排序
*@param arr 将要排序的数组引用地址值
*@param type true表示顺序排序,false表示逆序排序
*/
public static void bubbleSort(int[] arr, boolean type){
if(type){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
swap(arr,j,j+1);
}
}
}
}else{
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]<arr[j+1]){
swap(arr,j,j+1);
}
}
}
}
}
/**
*选择排序
*@param arr 将要排序的数组引用地址值
*@param type true表示顺序排序,false表示逆序排序
*/
public static void selectSort(int[] arr,boolean type){
if(type){
for(int i=0;i<arr.length-1;i++){
for(int j=i;j<arr.length;j++){
if(arr[i]>arr[j]){
swap(arr,i,j);
}
}
}
}else{
for(int i=0;i<arr.length-1;i++){
for(int j=i;j<arr.length;j++){
if(arr[i]<arr[j]){
swap(arr,i,j);
}
}
}
}
}
/**
*快速排序
*@param arr 将要排序的数组引用地址值
*@param l 数组索引的初始位置
*@param r 数组的长度-1
*@param type true表示顺序排序,false表示逆序排序
*/
public static void quicklySort(int[] arr,int l,int r,boolean type){
if(l<r){
int i=l,j=r,x=arr[i];
if(type){
while(i<j){
while(i<j&&arr[j]>x)
j--;
if(i<j)
arr[i++]=arr[j];
while(i<j&&arr[i]<x)
i++;
if(i<j)
arr[j--]=arr[i];
}
}else{
while(i<j){
while(i<j&&arr[j]<x)
j--;
if(i<j)
arr[i++]=arr[j];
while(i<j&&arr[i]>x)
i++;
if(i<j)
arr[j--]=arr[i];
}
}
arr[i]=x;
quicklySort(arr,l,r-1,type);
quicklySort(arr,l+1,r,type);
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69920205/viewspace-2645227/ ,如需转载,请注明出处,否则将追究法律责任。