温毛

Github:tatsumiw

导航

Java(常用排序算法)

冒泡排序

比较相邻的元素。如果第一个比第二个大,就交换他们两个,对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。  

针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 

 1         //定义一个数组
 2         int[] numbers = {1,45,23,78};
 3         int temp;
 4 
 5         int size = numbers.length;
 6         for(int i = 0 ; i < size-1; i ++) {
 7             for(int j = 0 ;j < size-1-i ; j++){
 8                 if(numbers[j] > numbers[j+1]) {  //交换两数位置
 9                     temp = numbers[j];
10                     numbers[j] = numbers[j+1];
11                     numbers[j+1] = temp;
12                     }    
13             }
14         }

选择排序

冒泡排序的优化, 在未排序序列中找到最小元素,存放到排序序列的起始位置,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。

        //定义一个数组
        int[] numbers = {1,45,23,78};
        int temp;
        int size = numbers.length;
    
        for(int i = 0 ; i < size ; i++){
            int k = i;   //待确定的位置
            //选择出应该在第i个位置的数
            for(int j = i ; j <size ; j++){
                if(numbers[j] < numbers[k]){
                    k = j;
                    }
                }
            //交换两个数
            temp = numbers[i];
            numbers[i] = numbers[k];
            numbers[k] = temp;
        }

插入排序

从第一个元素开始,该元素可以认为已经被排序,取出下一个元素,在已经排序的元素序列中从后向前扫描。如果该元素(已排序)大于新元素,将该元素移到下一位置,重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置中 重复步骤

        //定义一个数组
        int[] numbers = {1,45,23,78};
        int temp;
        int size = numbers.length;
        int j =  0;

        for(int i = 0 ; i < size ; i++){
            temp = numbers[i];
            //假如temp比前面的值小,则将前面的值后移
            for(j = i ; j > 0 && temp < numbers[j-1] ; j --){
                numbers[j] = numbers[j-1];
                }
            numbers[j] = temp;
        }

 

posted on 2018-07-21 10:39  Tatsumi_温毛  阅读(129)  评论(0编辑  收藏  举报