冒泡,插入,选择,快速排序

/*
 * @Issue: 数组排序:从键盘读入多个整数,要求对这些整数实现从小到大或从大到小排序,
           屏幕上输出排序结果。冒泡、选择、插入,快速排序三种排序算法都可以
 * @Author: 一届书生
 * @LastEditTime: 2020-03-18 15:13:41
 */
#include <iostream>
#include <stdio.h>
using namespace std;

#define num 10
int a[100]; //待排序数组

// 冒泡排序 从小到大
void bubble(int *p, int len)
{
    int t = 0;
    for (int i = 0; i < len - 1; i++)
    {
        for (int j = i + 1; j < len; j++)
        {
            if (*(p + i) > *(p + j))
            { //若想从大到小 改成<即可
                swap(*(p + i), *(p + j));
            }
        }
    }
}

// 插入排序
void insert(int *p, int len)
{
    int i, j, key;
    for (i = 1; i < len; i++)
    {                   //从第二个数开始判断
        key = *(p + i); //取一下第二个数
        j = i - 1;      //遍历第i个数之前的数
        while (j >= 0 && *(p + j) > key)
        {
            *(p + j + 1) = *(p + j);
            j--;
        }
        *(p + j + 1) = key;
    }
}

// 选择排序
void select(int *p, int len)
{
    int minindex, temp;
    for (int i = 0; i < len - 1; i++)
    {
        minindex = i;
        for (int j = i + 1; j < len; j++)
        {
            if (*(p + j) < *(p + minindex))
                minindex = j; //遍历余下的数组 找一个最小的,与第i个位置的数交换
        }
        swap(*(p + i), *(p + minindex));
    }
}

// 快速排序
void quickSort(int t[], int left, int right)
{
    if (left >= right)
        return;
    // display(t, 10);         //  快排的过程展示
    int standard = t[left]; //以最左边界的那个数 作为基准数
    int i = left, j = right;
    while (i < j)

    {
        while (t[j] >= standard && j > i)
            j--;
        while (t[i] <= standard && i < j)
            i++;
        swap(t[i], t[j]);
    }
    swap(t[left], t[i]);
    quickSort(t, left, i - 1);
    quickSort(t, i + 1, right);
}

int main()
{
    for (int i = 0; i < num; i++)
    {
        cin >> a[i];
    }
    // bubble(a,num);       //冒泡排序
    // insert(a,num);       //插入排序
    // select(a,num);       //选择排序
    quickSort(a, 0, num - 1); //快速排序
    for (int i = 0; i < num; i++)
    {
        cout << a[i] << " ";
    }

    return 0;
}
原文地址:https://www.cnblogs.com/52dxer/p/12341073.html