zoukankan      html  css  js  c++  java
  • 起泡排序和快速排序

    #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    #define MAXSIZE 20
    typedef struct
    {
        int r[MAXSIZE + 1];
        int length;
    }SqList;
    
    //***********************************起泡排序*************************************begin
    
    void BubbleSort(SqList& L)
    {
        bool flag = false;
        for (int i = L.length; i > 1 && !flag; i--)
        {
            flag = true;
            for (int j = 1; j < i; j++)
            {
                if (L.r[j] > L.r[j + 1])
                {
                    flag = false;
                    int temp = L.r[j];
                    L.r[j] = L.r[j + 1];
                    L.r[j + 1] = temp;
                }
            }
        }
    }
    
    //***********************************起泡排序*************************************end
    
    //***********************************快速排序*************************************begin
    
    int Partition(SqList& L, int low, int high)
    {
        L.r[0] = L.r[low];
        while (low < high)
        {
            while(low<high && L.r[high] >= L.r[0])
            {
                high--;
            }
            L.r[low] = L.r[high];
            while(low<high && L.r[low] <= L.r[0])
            {
                low++;
            }
            L.r[high] = L.r[low];
        }
        L.r[low] = L.r[0];
        return low;
    }
    
    void QSort(SqList& L, int low, int high)
    {
        if (low < high)
        {
            int pivotloc = Partition(L, low, high);
            QSort(L, low, pivotloc - 1);
            QSort(L, pivotloc + 1, high);
        }
    } 
    void QuickSort(SqList &L)
    {
        QSort(L, 1, L.length);
    }
    
    //***********************************快速排序*************************************end
    
    void SqlistPrint(SqList &L)
    {
        for (int i = 1; i <= L.length; i++)
        {
            cout<<L.r[i]<<"  ";
        }
        cout<<endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int arr[8] = {49, 38, 65, 97, 76, 13, 27, 49};
        SqList QuickList;
        SqList BubbleList;
        QuickList.length = sizeof(arr)/sizeof(arr[0]);
        BubbleList.length = sizeof(arr)/sizeof(arr[0]);
        for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
        {
            QuickList.r[i + 1] = arr[i];
            BubbleList.r[i + 1] = arr[i];
        }
        cout<<"*************************起泡排序**************************"<<endl;
        cout<<"before: ";
        SqlistPrint(BubbleList);
        BubbleSort(BubbleList);
        cout<<"after:  ";
        SqlistPrint(BubbleList);
        cout<<"*************************快速排序**************************"<<endl;
        cout<<"before: ";
        SqlistPrint(QuickList);
        QuickSort(QuickList);
        cout<<"after:  ";
        SqlistPrint(QuickList);
    
        cout<<endl;
        return 0;
    }

    运行界面如下:

  • 相关阅读:
    restic 快速安全可靠的数据备份工具
    使用sidekick 负载均衡minio 集群
    sidekick简单试用
    使用nfpm打包deb&&rpm
    sidekick minio 团队开源的高性能http sidecar 负载均衡器
    baretest小巧但是强大的jest可选测试框架
    fetchq-cron 基于webhook 的任务调度工具
    uwsgi+nginx+flask+docker+supervisord oracle中文乱码问题
    gqless 一个强大灵活的不用写query的graphql client
    cortex 1.0 版本发布
  • 原文地址:https://www.cnblogs.com/venow/p/2670026.html
Copyright © 2011-2022 走看看