美文网首页
冒泡排序&选择排序

冒泡排序&选择排序

作者: 索伯列夫 | 来源:发表于2018-09-25 12:44 被阅读0次

    在本科时学的数据结构,所以还是先用c语言描述。本文今天(2018.9.25)先讨论两种简单的排序
    1.冒泡排序
    2.选择排序

    1.冒泡排序:

    两两比较相邻记录的关键字,如果反序则交换,直到没有反序为止。(实际上就是,一轮比较,可以把一个最小的数字放到最后边)

    冒泡排序.gif
    // 冒泡排序初级(顺序表)
    void BubbleSort0(SqList *L){
        int i,j;
        for(i = 1; i < L->length; i++){
            for(j = i+1; j <= L->length; j++){
                if(L->r[i] > L->r[j]){
                    swap(L,i,j);    //交换L->r[i]与L->r[j]的值
                }
            }
        }
    }
    

    比较过程可以这么理解:(比如有10个数字的数组)
    第1轮,需要比较10-1=9次;
    第2轮,需要比较10-2=8次;(因为第一轮已经确定了一个数字)
    ...

    2.选择排序:

    找最小值,并交换位置

    选择排序.gif
    // 对顺序表L选择排序
    void SelectSort(SqList *L){
        int i,j,min;
        for(i = 1,i < l->length; i++){
            min = i;    //将当前下标定义为最小值
            for(j = i+1; j <= l->length; j++){  //循环
                if(L->r[min] > L->r[j])     //如果有小鱼当前最小值的关键字
                    min = j;    //将此关键字的下标赋值给min
            }
            if(i != min)        //如果min不等于i,说明找到最小值,交换
                swap(L,i,min);  //交换L->r[i]与L->r[min]的值
        }
    }
    

    相关文章

      网友评论

          本文标题:冒泡排序&选择排序

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