zoukankan      html  css  js  c++  java
  • 冒泡,插入,选择,快速排序

    /*
     * @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;
    }
  • 相关阅读:
    Android UI性能优化详解
    Android开发中一些被冷落但却很有用的类和方法
    Android开发:Translucent System Bar 的最佳实践
    让动画不再僵硬:Facebook Rebound Android动画库介绍
    Android Touch事件传递机制
    转载爱哥自定义View系列--Canvas详解
    Android最佳实践指南
    Android网络请求心路历程
    转载爱哥自定义View系列--文字详解
    ORM是什么?
  • 原文地址:https://www.cnblogs.com/52dxer/p/12341073.html
Copyright © 2011-2022 走看看