美文网首页
数据结构(交换排序-冒泡、快速)

数据结构(交换排序-冒泡、快速)

作者: yinxmm | 来源:发表于2018-10-06 21:23 被阅读0次

交换排序的基本思想:两两比较排序记录关键字,一旦发现两个记录不满足次序要求时进行交换,直到整个序列全部满足要求为止。

1.冒泡排序

void BubbleSort(SqList &L)
{
        m=L.length -1; flag = 1;//flag用来标记某一趟排序是否发生交换
        while((m>0)&&(flag == 1))
        {
              flag = 0;//flag置为0,如果本趟排序没有发生交换,则不会执行下一趟排序
              for(j=1;j<m;j++)
                  if(L.r[j].key > L.r[j+1].key)
                 {
                        flag = 1;//flag置为1表示本趟排序发生了变换
                        t= L.r[j];L.r[j] = L.r[j+1];L.r[j+1] = t;//交换前后两个记录
                  }
               --m;
        }
}

2. 快速排序


int Partition(SqList &L,int low,int high)
{//对顺序表中子表r[low..high]进行一趟排序,返回枢纽位置
    L.r[o] = L.r[low];//用子表的第一个记录做枢纽记录
    pivotkey = L.r[low].key;//枢纽记录关键字保存在pivotkey中
    while(low<high)//从表的两端交替地向中间扫描
    {
          while(low<high&&L.r[high].key>= pivotkey) --high;
           L.r[low] = L.r[high];//将比枢纽小的记录移到低端
          while(low<high&&L.r[row].key<= pivotkey) ++low;
           L.r[high] = L.r[low];//将比枢纽大的记录移到高端
           
     }
      L.r[low] = L.r[0];//枢纽记录到位
      return low;//返回枢纽记录

}
void QSort(SqList &L,int low,int high)
{//调用前置初值:low=1,high = L.length
//对顺序表L中的子序列L.r[low..high]进行排序
    if(low<high)
    {
          pivotloc = Partition(L,low,high);
          QSort(L,low,pivotloc-1);//对左子表递归排序
          QSort(L,pivotloc+1,high);//对右子表递归排序
    }
}
void QuickSort(SqList &L)
{
    QSort(L,1,L.length);
}

相关文章

  • 排序算法之交换排序

    利用交换数据元素的位置进行排序的方法称为交换排序。常见的交换排序方法有冒泡排序和快速排序。 1. 冒泡排序 1.1...

  • 排序算法篇_快速排序法

      快速排序(Quick Sort)法和冒泡排序法类似,都是基于交换排序思想的。快速排序对冒泡排序法进行了改进,从...

  • 排序算法

    冒泡排序 选择排序 插入排序二分插入排序希尔排序 堆排序 归并排序 快速排序 交换排序类:冒泡排序快速排序 选择排...

  • 快速排序算法

    快速 排序与冒泡排序类型 都是基于交换 但是效率比冒泡排序更高 快速排序思想首先设定一个分界值 将数...

  • 排序算法

    排序算法 冒泡排序 选择排序 直接插入排序 希尔排序 堆排序 归并排序 快速排序 冒泡排序 冒泡排序是一种交换排序...

  • 算法

    十大经典排序算法(动图演示) 【数据结构】链表的原理及与其相关的常见面试题总结 一、排序算法 交换排序冒泡排序快速...

  • 交换排序法

    交换排序法是指借助于数据元素之间的相互交换进行排序的一种方法。冒泡排序与快速排序法都属于交换排序法。 冒泡排序法的...

  • 算法之交换排序-思想剖析-by: 西瓜

    交换排序的类型分为2种,冒泡排序以及快速排序。后期楼主会把所有排序全部更新完毕。一:冒泡排序现实例子:冒泡思想:编...

  • 排序算法---快速排序(Quick Sort)

    快速排序和冒泡排序类似,都是基于交换的思想,快速排序对冒泡排序进行了优化,从而更加快速高效(从名字就可以看出应该很...

  • 排序

    from:原文 - git ****冒泡排序****:相邻比较大小,交换位置。 快速排序:快速排序又是一种分而治之...

网友评论

      本文标题:数据结构(交换排序-冒泡、快速)

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