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

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

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 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= pivotkey) --high;
           L.r[low] = L.r[high];//将比枢纽小的记录移到低端
          while(low

你可能感兴趣的:(数据结构(交换排序-冒泡、快速))