鱼C论坛

 找回密码
 立即注册
查看: 839|回复: 3

[技术交流] 排序算法合集(更新中)

[复制链接]
发表于 2023-7-20 16:59:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 香蕉那个不拿拿 于 2023-7-21 14:58 编辑

已实现插入排序和选择排序,冒泡,计数,快速排序
#include<iostream>
using namespace std;
int carr[1000000][3];
int kuaisu (int arr[1000],int n){
        int max = 0;
        for (int i = 1;i<=n;i++){
                if (arr[i] > max){
                        max = arr[i];
                }
        }
        int jizhun =arr[1];
        int count1=0,count2=0,arr1[999],arr2[999];
        if (n == 1 ||n==0){
                if (n == 1){
                        return arr[1];
                }        
        }
        for (int i = 1;i <= n;i++){
                if (arr[i]<=jizhun){
                        count1++;
                        arr1[count1] = arr[i];
                        
                }
                else if (arr[i] >jizhun){
                        count2++;
                        arr2[count2] = arr[i];
                        
                }
        }
        if (count1 != 0){
                kuaisu(arr1,count1);
        }
        if (count2 !=0){
        
                kuaisu(arr2,count2);
        }
        for (int i = 1;i<=n;i++){
                if (i <=count1){
                        arr[i] = arr1[i];
                }
                else{
                        arr[i] = arr2[i - count1];
                }
        }
}

int main(){
        int arr[1000],n,temp;
        cin>>n;
        for (int i = 1;i <=n;i++){
                cin>>arr[i];        
        }
        string nb;
        cout<<"请选择排序方法"<<endl;
        cin>>nb;

        if (nb == "插入排序"){
                for (int i = 2;i <= n;i++){
                        for (int j = i-1;j>=0;j--){
                                if (arr[i] > arr[j]){
                                        temp = arr[i];
                                        for (int k = i - 1;k >j;k--){
                                                arr[k+1] = arr[k];
                                        }
                                        arr[j+1] = temp;
                                        break;
                                }
                        }
                }
        }
        else if (nb == "选择排序"){
                long long less = 1000000000000000;
                int less_j;
                for (int i = 0;i<n;i++){
                        for (int j = i + 1;j <=n;j++){
                                if (arr[j] < less){
                                        less = arr[j];
                                        less_j = j;
                                }
        
                        }
                        swap(arr[less_j],arr[i+1]);
                        less = 1000000000000000;
                }

        }
        else if (nb == "冒泡排序"){
                for (int i = n;i  >= 1;i--){
                        for (int j = 1; j < i; j++){
                                if (arr[j] > arr[j + 1]){
                                        swap (arr[j],arr[j+1]);
                                }
                        }
                }
        }
        else if (nb == "计数排序"){

                int max,less,count;
                count = 1;
                cout<<"请输入最大最小值"<<endl;
                cin>>max>>less;
                for (int i = 1;i <= n ;i++){
                        carr[arr[i] - less + 1][1] = arr[i];
                        carr[arr[i] - less + 1][2] += 1;
                }
                for (int i = 1;i <= max; i++){
                        for (int j = carr[i][2];j >= 1;j--){
                                arr[count] = carr[i][1];
                                count++;
                        }
                }
                
        }
        else if (nb == "快速排序"){        
                kuaisu(arr,n);
        }
        for (int i = 1; i<=n;i++){
                cout<<arr[i]<<" ";
        }
}
推荐网站https://visualgo.net/en
捕获.PNG
一个动画演示各种算法的平台

评分

参与人数 1荣誉 +3 收起 理由
zhangjinxuan + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-20 17:38:38 | 显示全部楼层
支持!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-20 17:39:46 | 显示全部楼层

每天进步一点点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-21 14:59:03 | 显示全部楼层
代码破120!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 08:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表