几种常用的排序方法

选择排序:

public static void  selectSort(int[]array){
        int tmp;
        int minindex;
        for(int i=0;i<array.length;i++){//遍历整个数组
            minindex=i;
            for(int j=i+1;j<array.length ;j++){//遍历array[minindex]之后的数组,
                if(array[minindex]>array[j]){//每找到一个比array[minindex]小的数就进行一次交换,这个过程可能交换多次。
                    tmp=array[minindex];
                    array[minindex]=array[j];
                    array[j]=tmp;
                }
            }
        }
    }

算法思想;
我们在一个数组当中选出一个最小的元素,然后和第一个元素交换,然后后面再在剩下的找最小的元素,和第二个元素交换。这样最终就可以得到一个有序的序列。

插入排序:

    public static void insrtSort(int[] array){
        int tmp = 0;
        int j;
        for(int i = 1;i < array.length;i++){
            tmp = array[i];
            for(j = i-1;j >= 0;j--){
                if(array[j] > tmp){
                    array[j+1] = array[j];
                }else{
                    break;
                }
            }
            array[j+1] = tmp;//         }

    }

算法思想:
1.默认序列中的第1个元素是有序的;
2.从下标为1的元素开始,取当前下标i位置处的元素a[i]保存到一个tmp里;
3.对前半部分有序序列的循环遍历,并与tmp比较,直到遇到一个比tmp小的元素,此时的下标为j,那么现在只要对a[j+1]进行赋值tmp即可;
4.将待插入元素的下标 i 向后推移一个位置;
重复进行第2步到第4步,直到乱序序列中的元素被全部插入到有序序列中;
经过以上5个步骤之后,整体序列必然有序,排序完成。

猜你喜欢

转载自blog.csdn.net/qq_37232304/article/details/79982672