美文网首页
6、排序算法

6、排序算法

作者: 十二月_9d09 | 来源:发表于2019-07-27 07:36 被阅读0次

    选择排序、冒泡排序、插入排序三种排序算法可以总结为如下:
    都将数组分为已排序部分和未排序部分。

    1. 选择排序将已排序部分定义在左端,然后选择未排序部分的最小元素和未排序部分的第一个元素交换。
    2. 冒泡排序将已排序部分定义在右端,在遍历未排序部分的过程执行交换,将最大元素交换到最右端。
    3. 插入排序将已排序部分定义在左端,将未排序部分元的第一个元素插入到已排序部分合适的位置。

    选择排序

    /** 
     *  【选择排序】:最值出现在起始端
     *  
     *  第1趟:在n个数中找到最小(大)数与第一个数交换位置
     *  第2趟:在剩下n-1个数中找到最小(大)数与第二个数交换位置
     *  重复这样的操作...依次与第三个、第四个...数交换位置
     *  第n-1趟,最终可实现数据的升序(降序)排列。
     *
     */
    void selectSort(int *arr, int length) {
        for (int i = 0; i < length - 1; i++) { //趟数
            for (int j = i + 1; j < length; j++) { //比较次数
                if (arr[i] > arr[j]) {
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }
    

    冒泡排序

    /** 
     *  【冒泡排序】:相邻元素两两比较,比较完一趟,最值出现在末尾
     *  第1趟:依次比较相邻的两个数,不断交换(小数放前,大数放后)逐个推进,最值最后出现在第n个元素位置
     *  第2趟:依次比较相邻的两个数,不断交换(小数放前,大数放后)逐个推进,最值最后出现在第n-1个元素位置
     *   ……   ……
     *  第n-1趟:依次比较相邻的两个数,不断交换(小数放前,大数放后)逐个推进,最值最后出现在第2个元素位置 
     */
    void bublleSort(int *arr, int length) {
        for(int i = 0; i < length - 1; i++) { //趟数
            for(int j = 0; j < length - i - 1; j++) { //比较次数
                if(arr[j] > arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            } 
        }
    }
    

    相关文章

      网友评论

          本文标题:6、排序算法

          本文链接:https://www.haomeiwen.com/subject/felbkctx.html