-C ++ソートアルゴリズムを実装

#include <iostream>

using namespace std;

void show(int M[], int n)
{
    for(int i=0; i<n; i++)
        cout<<M[i]<<" ";
    cout<<endl;
}

//快速排序
void quick_sort(int M[], int left, int right)
{
    if(left < right)
    {
        int i,j,x;
        i = left;
        j = right;
        x = M[i];

        while(i<j)
        {
            while(i<j && M[j]>= x)
                j--;
            if(i<j)
                M[i++] = M[j];

            while(i<j && M[i]<= x)
                i++;
            if(i<j)
                M[j--] = M[i];
        }

        M[i] = x;
        quick_sort(M, left, i-1);
        quick_sort(M, i+1, right);
    }

}

//插入排序
void insert_sort(int M[], int n)
{
    int i,j,tmp;
    for(i=0; i<n; i++)
    {
        tmp = M[i];  //取一个新的数据tmp
        for(j=i; j>0 && M[j-1]>tmp; j--)//将比数据tmp大的数据往后移动,直到找到比它的数据
            M[j] = M[j-1];      // j指向的始终是一个空位置

        M[j] = tmp;//将tmp放置在临界位置上
    }
}

//冒泡排序
void bubble_sort(int M[], int n)
{
    int i,j,k;
    for(i=0; i<n; i++)  //每次冒泡后 数组最末端数据已经是最大数据,下次不需要重复排序
        for(j=0; j<n-i-1; j++)
        {
            if(M[j]>M[j+1])
            {
                k = M[j+1];
                M[j+1] = M[j];
                M[j] = k;
            }
        }
}

int main()
{

//  输入数据格式: 第一行 n 表示n个数据
//  接下里 输入 n个数据,举例如下:
//  5
//  1 3 5 2 4

    freopen ("input.txt", "r", stdin);  //可以从文件中读取数据输入,
                        //如果手动输入,注释该行
    int n;
    cin>>n;
    int M[n];
    for(int i =0; i<n; i++)
        cin>>M[i];

    show(M, n);
    quick_sort(M, 0, n-1);
//  insert_sort(M, n);
//  bubble_sort(M, n);
    show(M, n);

    return 0;
}

おすすめ

転載: www.cnblogs.com/yeran/p/10959797.html