交换排序分为快速排序和冒泡排序,以下为其Java实现代码
package com.method;
public class ExchangeMethod {
/**
* 快速排序
* @param arr
* @param start
* @param end
* @return
*/
public static int[] QuickSort(int arr[],int start,int end){
if(start>=end){
return arr;
}
int mid=partSort(arr,start,end);
QuickSort(arr,start,mid-1);
QuickSort(arr,mid+1,end);
return arr;
}
/**
* 进行局部排序
* @param arr
* @param start
* @param end
* @return
*/
private static int partSort(int[] arr, int start, int end) {
int key=arr[start];
while(start<end){
while(end>start && arr[end]>=key){
end--;
}
if(end>start&&arr[end]<key){
arr[start]=arr[end];
}
while(end>start&&arr[start]<=key){
start++;
}
if(end>start&&arr[start]>key){
arr[end]=arr[start];
}
arr[start]=key;
}
return start;
}
/**
* 冒泡排序
* @param arr
* @return
*/
public static int[] bubbleSort(int arr[]){
boolean flag=false;
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
flag=true;
}
}
if(flag==false){
return arr;
}
}
return arr;
}
}
测试代码
package com.test;
import com.method.ExchangeMethod;
public class Exchangetest {
public static void main(String[] args) {
int[] arr={7,8,5,3,8,2,1,9,0};
//int arr1[]=ExchangeMethod.bubbleSort(arr);
int arr1[]=ExchangeMethod.QuickSort(arr,0,arr.length-1);
for(int i=0;i<arr1.length;i++){
System.out.print(arr1[i]+"\t");
}
}
}