三种基本排序-冒泡,选择,二分

闲话不多说,直接上代码,简明易懂,条理清晰,交互性强,尽善尽美

码住,建议copy下来:

先上二分法吧,稍复杂点的,代码多一些,用了函数调用

二分排序:

#include <iostream>
using namespace std;

// 二分法查找插入位置
int binarysearch(int arr[], int low, int high, int key) {
    if (high <= low)
        return (key > arr[low]) ? (low + 1) : low;

    int mid = (low + high) / 2;

    if (key == arr[mid])
        return mid + 1;

    if (key > arr[mid])
        return binarysearch(arr, mid + 1, high, key);
    return binarysearch(arr, low, mid - 1, key);
}

// 二分法插入排序
void binary(int arr[], int n) {
    int i, loc, j, selected;

    for (i = 1; i < n; ++i) {
        j = i - 1;
        selected = arr[i];

        // 查找插入位置
        loc = binarysearch(arr, 0, j, selected);

        // 移动元素以便插入
        while (j >= loc) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = selected;
    }
}

int main() {
    int i, num;

    cout << "输入你要排序的数字数量(100以内):\n";
    cin >> num;

    int a[100] = {0};

    cout << "好的,现在我们将为" << num << "个数字排序,请逐个输入:\n";
    for (i = 0; i < num; i++) {
        cin >> a[i];
    }

    binary(a, num);

    cout << "排序后的结果为:\n";
    for (i = 0; i < num; i++) {
        cout << a[i] << " ";
    }
    cout << endl;

    return 0;
}

 选择排序:

#include<iostream>
using namespace std;
int main()
{  //首先定义数组,循环输入数字
    int i,j,t,num;
    int a[100]={0};         //定义变量

    cout<<"输入你要为多少个数字排序(100以内):\n";
    cin>>num;               //个数限定

    cout<<"好的,我们如今将为"<<num<<"个数字排序,请依次输入:\n";
    for(i=0;i<num;i++){
        cin>>a[i];          //循环输入
    }

    for(i=0;i<num;i++){
        for(j=i+1;j<num;j++){
            if(a[i]>a[j]){
                t=a[i];a[i]=a[j];a[j]=t;
            }
        }
    }                       //每次决出第一个数

    for(i=0;i<num;i++)
        cout<<a[i]<<"  ";   //循环输出
    return 0;
}

冒泡排序:

#include<iostream>
using namespace std;
int main()
{
    int i,j,t,num;
    int a[100]={0};         //定义变量

    cout<<"输入你要为多少个数字排序(100以内):\n";
    cin>>num;               //个数限定

    cout<<"好的,我们如今将为"<<num<<"个数字排序,请依次输入:\n";
    for(i=0;i<num;i++){
        cin>>a[i];          //循环输入
    }

    for(j=1;j<num;j++){
        for(i=0;i<num-j;i++){     //反复修正第二个条件
            if(a[i]>a[i+1]){      //谨防此处越界
                t=a[i];a[i]=a[i+1];a[i+1]=t;
            }
        }
    }                       //冒泡实现,我是先写内循环,再外循环修整

    for(i=0;i<num;i++)
        cout<<a[i]<<"  ";   //循环输出
    return 0;
}

相关推荐

  1. 基本排序-冒泡,选择

    2024-05-13 19:20:04       35 阅读
  2. 选择排序冒泡排序

    2024-05-13 19:20:04       35 阅读
  3. 冒泡排序选择排序--C语言

    2024-05-13 19:20:04       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 19:20:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 19:20:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 19:20:04       82 阅读
  4. Python语言-面向对象

    2024-05-13 19:20:04       91 阅读

热门阅读

  1. MySQL中所有数据类型

    2024-05-13 19:20:04       26 阅读
  2. MongoDB聚合运算符:$topN

    2024-05-13 19:20:04       32 阅读
  3. stylus详解与引入

    2024-05-13 19:20:04       37 阅读
  4. 深度学习学习日记(5.6)

    2024-05-13 19:20:04       29 阅读
  5. 初级银行从业资格证知识点(十)

    2024-05-13 19:20:04       32 阅读
  6. 升级WSL Ubuntu内核从5.10到5.15

    2024-05-13 19:20:04       35 阅读
  7. Flink面试整理-Flink的配置管理包含哪些?

    2024-05-13 19:20:04       35 阅读
  8. Python Pandas 数据分析快速入门

    2024-05-13 19:20:04       29 阅读
  9. el-tree

    2024-05-13 19:20:04       78 阅读
  10. QT 文字转语言插件

    2024-05-13 19:20:04       34 阅读
  11. 特殊类的设计与单例模式

    2024-05-13 19:20:04       34 阅读
  12. 网络工程师----第二十六天

    2024-05-13 19:20:04       32 阅读
  13. 计算机组成与结构 计算机基本原理 软设刷题

    2024-05-13 19:20:04       31 阅读