首页 > 编程语言 >算法之交换排序

算法之交换排序

时间:2023-02-17 09:55:22浏览次数:37  
标签:元素 交换 flag 冒泡排序 算法 子表 排序 逆序

一、概念

思想:

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

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.快速排序

思路:

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

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

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

 

标签:元素,交换,flag,冒泡排序,算法,子表,排序,逆序
From: https://www.cnblogs.com/kongxudeshenghuo/p/16184654.html

相关文章