/**
*将数组中的两个指定下标的元素交换位置
*@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);
}
} |
|