交换排序

来源:互联网 发布:阿里云大学在哪里 编辑:程序博客网 时间:2024/04/30 15:31
package test;

public class BubbleSort {

public static void main(String[] args) {
int[] arr = { 91, 55, 18, 39, 47, 62, 48, 16, 4 };
sort(arr);
}

public static void sort(int[] arr) {
//冒泡排序两层循环
int temp;
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]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int k = 0; k < arr.length; k++) {
System.out.print(arr[k]+" ");
}

}
}





package test;
/**快速排序
 * 需要两个函数:
① 递归函数  public static void quickSort(int[]n ,int left,int right)
② 分割函数(一趟快速排序函数) public static int partition(int[]n ,int left,int right)
 * @author Administrator
 *
 */
public class QuickSort {  
  
public static void main(String[] args) {
int [] arr = {49,38,65,97,76,13,27};  
quickSort(arr,0,arr.length-1);
for (int i = 0; i < arr.length; i++) {  
            System.out.print(arr[i]+" ");  
        } 
}
public static void quickSort(int[] arr, int left, int right){
int key; 
if(left<right){
key=partition(arr, left, right);
quickSort(arr, left, key-1);
quickSort(arr, key+1, right);
}
}
//一趟排序
public static int partition(int[] arr, int left, int right){
int key=arr[left];
while(left<right){
while(left<right&&arr[right]>=key) right--;
   arr[left]=arr[right];
   
while(left<right&&arr[left]<=key) left++;
            arr[right]=arr[left];
}
arr[left]=key;
return left;
}
}  


0 0
原创粉丝点击