算法之交换排序

Posted 铜须的编程生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法之交换排序相关的知识,希望对你有一定的参考价值。

一、概念

思想:

如果元素比较是逆序则交换元素。

1.冒泡排序

基本思想:基于简单交换思想

每趟不断将元素两两比较,按照需要是顺序判断是否需要进行交换。

void bubble_sort(SqList &L)     // 冒泡排序算法
    int m,i,j;    RedType x;    // 交换时临时存储
    for( m=1; m<=n-1;m++)      // 总共需要m趟
        for(j=1;j<=n-m; m++) 
            if(L.r[j].key>L.r[j+1].key)     // 发现逆序
                x=L.r[j];L.r[j]=L.r[j+1]; L.r[j+1]=x    // 交换
            
        
    

优点:每趟结束时,不仅能找到一个最大值到最后面的位置,还能理顺其他元素。

提高思路:如果某一趟比较没有进行交换顺序,则表明元素顺序已经达成。

void bubble_sort(SqList &L)     // 冒泡排序算法
    int m,i,j,flag=1;    RedType x;    // 交换时临时存储,新增一个标记判断是否有进行交换
    for( m=1; m<=n-1 && flag=1;m++)      // 总共需要m趟
        flag = 0
        for(j=1;j<=n-m; m++) 
            if(L.r[j].key>L.r[j+1].key)     // 发现逆序
                flag = 1            // 如果发生交换,标记符置为1,如果没有进行表换,flag保存为0
                x=L.r[j];L.r[j]=L.r[j+1]; L.r[j+1]=x    // 交换
            
        
    

 

2.快速排序

思路:

任取一个元素,所有比他大的一律方后面,比他小的一律方前面。形成左右两个子表

对各子表重新选择中心元素并依次规则调整

直到每一个子表的元素只剩一个

 

以上是关于算法之交换排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法之排序算法:交换排序

算法之排序算法-shell排序(交换法)

交换排序算法之快速排序

算法之交换排序

排序算法之交换

排序算法之冒泡排序