关闭

交换排序

127人阅读 评论(0) 收藏 举报
分类:
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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4175次
    • 积分:172
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:15篇
    • 译文:0篇
    • 评论:0条