选择排序

工作原理
选择排序的的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

算法实现(所用语言为java)

public static void selectSort(int [] arr) {
    for(int i = 0;i<arr.length-1;i++){
        for(int x = i;x<arr.length;x++) {
            if(arr[i]>arr[x]) {
                int temp = arr[i];
                arr[i] = arr[x];
                arr[x] = temp;
            }
        }
    }
}

例子讲解

数组:[12,11,34,65,334,23,55]

第一次排序:[12,11,34,65,334,23,55]
第二次排序:[11,12,34,65,334,23,55]
第三次排序:[11,12,34,65,334,23,55]
第四次排序:[11,12,23,65,334,34,55]
第五次排序:[11,12,23,34,334,65,55]
第六次排序:[11,12,23,34,55,334,65]
第七次排序:[11,12,23,34,55,65,334]
冒泡排序

工作原理
比较相邻的元素,如果第一个比第二个大(或者第一个比第二个小),就交换他们两个,对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大(或最小)的数。针对所有的元素重复以上的步骤,除了最后一个,持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码实现(java语言)

public static void buttleSort(int [] arr) {
for(int i = 0;i<arr.length-1;i++) {
    for(int x=0;x<arr.length-1-i;x++) {
        if(arr[x]>arr[x+1]) {
            int temp = arr[x];
            arr[x] = arr[x+1];
            arr[x+1] = temp;
            }
        }
     }
}

-例子讲解

数组:[12,11,34,65,334,23,55]

第一次排序:[12,11,34,65,334,23,55]
第一次排序:[11,12,34,65,23,55,334]
第一次排序:[11,12,34,23,55,65,334]
第一次排序:[11,12,23,34,55,65,334]
第一次排序:[11,12,23,34,55,65,334]
第一次排序:[11,12,23,34,55,65,334]
第一次排序:[11,12,23,34,55,65,334]
写的相对来说比较简单了,算法实现的代码不是唯一的,所以小编在这里仅提供了相对简单的实现代码,感兴趣的小伙伴,如果不明白,可以给我留言,我一定会回复的哦。
附:完整代码

public class Sort {

    public static void main(String[] args) {
        int [] arr = {12,11,34,65,334,23,55};
        System.out.print("排序前的结果:");
        printArray(arr);
        selectSort(arr);
        System.out.print("选择排序结果:");
        printArray(arr);
        buttleSort(arr);
        System.out.print("冒泡排序结果:");
        printArray(arr);
    }
    //选择排序
    public static void selectSort(int [] arr) {
        for(int i = 0;i<arr.length-1;i++){
                for(int x = i;x<arr.length;x++) {
                    if(arr[i]>arr[x]) {
                        swap(arr,i,x);
                    }
            }
        }
    }
    //冒泡排序
    public static void buttleSort(int [] arr) {
        for(int i = 0;i<arr.length-1;i++) {
            for(int x=0;x<arr.length-1-i;x++) {
                if(arr[x]>arr[x+1]) {
                    swap(arr,x,x+1);
                }
            }
        }
    }
    //交换函数
    public static void swap(int [] arr,int x,int y) {
        int temp = arr[x];
        arr[x]=arr[y];
        arr[y]=temp;
    }
    //遍历函数
    public static void printArray(int [] arr) {
        for(int i=0;i<arr.length;i++) {
            if(i!=arr.length-1) {
                System.out.print(arr[i]+",");
            }else {
                System.out.println(arr[i]);
            }
        }
    }
}
Last modification:October 12th, 2020 at 11:27 am
If you think my article is useful to you, please feel free to appreciate