孙肖宁

选择排序和冒泡排序
选择排序工作原理选择排序的的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置...
扫描右侧二维码阅读全文
25
2017/08

选择排序和冒泡排序

选择排序

  • 工作原理

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

  • 算法实现(所用语言为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:August 25th, 2017 at 04:10 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment