• c++稍微复杂桶排序(未完待续~)


    由于上次的桶排序占用空间太多,这次又有了一个新的办法

    直接上代码:

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    void bubble(double a[],int n)
    {
    	double t;
    	for (int i = 0;i < n - 1;i ++)
    	{
    		for (int j = 0;j < n - i - 1;j ++)
    		{
    			if (a[j] > a[j + 1])
    			{
    				t = a[j];
    				a[j] = a[j + 1];
    				a[j + 1] = t;
    			}
    		}
    	}
    }
    int main()
    {
    	double tong[10][10];
    	cin >> n;
    	double arr[10];
    	for (int i = 0;i < n;i ++)
    	{
    		cin >> arr[i];
    	}
    	memset(tong,0,sizeof(tong));
    	for (int i = 0;i < n;i ++)  //列  
    	{
    		int t = 10.0 * arr[i];
    		tong[i][t] = arr[i];
    	}
    	for (int i = 1;i < 10;i ++)
    	{
    		int t = 10.0 * arr[i];
    		bubble(tong[i][t],n);
    	}
    	for (int i = 0;i < 10;i ++)
    	{
    		for (int j = 0;j < 10;j ++)
    		{
    			if (tong[i][j] > 0)
    			{
    				printf("%.2lf ",tong[i][j]);
    			}
    		}
    		continue;
    	} 
    	cout << endl;
    	return 0;
    }
    /*
    10
    0.78 0.17 0.39 0.26 0.72 0.94 0.21 0.12 0.23 0.68
    */
    

    运行结果:

    主要思路

    基本类似于分治思想就是把一个规模为N的问题分解为K个规模较小的问题,这些子问题相互独立且与原问题性质相同,求出子问题的解就可以得到原问题的解。流程如下:
    1、建立好对应的桶
    2、把要排序的数组分别放入对应的桶中
    3、统计元素在桶中出现的次数
    4、按照桶的顺序输出同理的元素

    这个代码还不完整,不能做到排序

    未完待续~
    参考视频:[https://www.bilibili.com/video/av17940595?from=search&seid=5095049522483939948]

  • 相关阅读:
    基础数据类型补充
    编码转换
    is 和 == 的区别
    字典 dict
    列表与元组
    python基础第一节
    poll函数
    基本 TCP 的回射服务器
    文件IO
    base | AtomicIntegerT类
  • 原文地址:https://www.cnblogs.com/LJA001162/p/11097808.html
Copyright © 2020-2023  润新知