java里的4种排序算法测试——冒泡、选择、插入、快速排序

排序算法是很多学编程的人必然遇到的问题。我本人也看了很多排序的程序,现在把这四种排序算法放在一个程序进行了测试,

都能实现数组的排序。

因为以下代码只写了一个输出,所以当你要测试哪个排序算法时记得把调用另外三个排序算法的那几行代码注释掉。

如果你想同时测试这四个排序算法,可以在每行调用排序方法的后面加入输出语句就行了。

仅供参考,算法不只一种写法哦

package sort;  
  
import java.util.Scanner;  
  
public class SortTest {  
    public static void main(String[] args) {  
        int[] num = {23, 64, 15, 3, 93, 30, 51, 28, 49, 66};  
 
        System.out.println("排序前: ");  
        showArray(num);
        System.out.println();  //换行,控制格式
        num = BubbleSort(num);  
//      num = ChoiceSort(num);  
//      num = InsertSort(num);
//        num = QuickSort(num, 0, num.length - 1);
      
        System.out.println("排序后:");  
        showArray(num);
        System.out.println();  //换行,控制格式
    }  
      
      
    private static void showArray(int[] num) {
		for(int i = 0; i < num.length; i++) {
			System.out.print(num[i] + " ");
		}
	}


    private static int[] BubbleSort(int[] num) {
        for(int i = 0; i < num.length; i++) {    
            for(int j = 0; j < num.length - 1; j++) {    
                if(num[j] > num[j + 1]) {    
                       int temp = num[j];    
                       num[j] = num[j + 1];    
                       num[j +1] = temp;        
                }    
            }
        }
            return num;
	}


		//插入排序  
    private static int[] InsertSort(int[] num) { 
        for(int i = 1; i < num.length; i++) {  
            int temp = num[i];  
            for(int j = i; j > 0; j--) {  
                if(num[j - 1] > temp) {  
                    num[j] = num[j - 1];  
                    num[j - 1] = temp;  
                }  
            }  
        }  
        return num;  
    }  
  
    	//优化后的选择排序 
    private static int[] ChoiceSort(int[] num) {  
        for (int i = 0; i < 9; i++) {  
            int min = i;  
            int j;  
            for (j = i + 1; j < num.length; j++) {  
                if (num[min] > num[j]) {  
                    min = j;  
                }  
            }  
            if (min != i) {  
                int temp = num[i];  
                num[i] = num[min];  
                num[min] = temp;  
            }  
        }  
        return num;  
    }
/*  
  //选择排序
    private static int[] ChoiceSort(int[] num) {       
        for(int i = 0; i < num.length - 1; i++) {    
            for(int j = i + 1; j < num.length; j++) {    
                if(num[i] > num[j]) {    
                    int temp = num[i];    
                    num[i] = num[j];    
                    num[j] = temp;    
                }    
            }    
        }    
        return num;    
    }
*/  
    // 快速排序  
    private static int[] QuickSort(int[] num, int i, int j) {  
        // TODO Auto-generated method stub  
        if(i < j) {  
            int middle = portition(num, i, j);  
            QuickSort(num, i, middle - 1);  
            QuickSort(num, middle + 1, j);  
        }  
        return num;  
    }  
  
    private static int portition(int[] num, int low, int high) {  
        int i = low, j = high;  
        int temp = num[i];  
        if (low < high) {  
            while (i < j) {  
                while ((num[j] >= temp) && (i < j)) {  
                    j--;  
                }  
                num[i] = num[j];  
                while ((num[i] <= temp) && (i < j)) {  
                    i++;  
                }  
                num[j] = num[i];  
            }  
            num[i] = temp;  
        }  
        return i;  
    }
}


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值