| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 411 人关注过本帖
标题:我遇到一个C++排序的问题故障,有大神能解决否?
只看楼主 加入收藏
allinf002
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2023-10-1
收藏
 问题点数:0 回复次数:0 
我遇到一个C++排序的问题故障,有大神能解决否?
本人小菜鸟,最近学到使用标准库的排序函数qsort()。但是在测试时发现,常见的排序算法都能正常排序,但是使用qsort后总会有一个错误的逆序,太令人费解了?

以下是测试结果
新排序法02
Runtime is: 63.3284 ms.
新排序法
Runtime is: 9217.69 ms.
冒泡排序法
Runtime is: 35644.4 ms.
选择排序法
Runtime is: 33746.1 ms.
指针式选择排序法
Runtime is: 10347.1 ms.
C++标准库排序
Runtime is: 33.1877 ms.
99505 2147469257 2147469406 -1569897150 -1200968838 One Reverse order.                //只有标准库的qsort出现了一条随机的逆序错误。
           n-2项    n-1项        n项           n+1项

C:\Users\ZH11002\source\repos\TEST0002\x64\Debug\TEST0002.exe (进程 9308)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

以下是代码
程序代码:
#include <iostream>
#include <stdio.h>
#include <bitset>
#include <stdlib.h>
#include <random>
#include <Windows.h>
#pragma warning(disable:4996)

constexpr auto NUM01 = 100000;

using namespace std;

int qsortnum(const void* a, const void* b) {
    int* aa = (int*)a;
    int* bb = (int*)b;
    return *aa - *bb;
}

int main()
{
    int* a = new int[NUM01];

    random_device rd;

    LARGE_INTEGER freq01;
    LARGE_INTEGER begintime01;
    LARGE_INTEGER endtime01;
    double microsecond01;


    QueryPerformanceFrequency(&freq01); // 获取时钟周期
    ///////////////////////////////////
    for (int i = 0; i < NUM01; i++) {
        a[i] = rd();
    }
    QueryPerformanceCounter(&begintime01); // 开始计时
    qsort(a, NUM01, sizeof(int), qsortnum);
    QueryPerformanceCounter(&endtime01);//结束计时
    microsecond01 = (double)(endtime01.QuadPart - begintime01.QuadPart) * 1e3 / (double)freq01.QuadPart;
    cout << "C++标准库排序" << endl;
    cout << "Runtime is: " << microsecond01 << " ms." << endl;

    for (int i = 0; i < NUM01 - 1; i++) {
        if (a[i] > a[i + 1]) {
            cout << i << " " << a[i - 1] << " " << a[i] << " " << a[i + 1] << " " << a[i + 2] << " One Reverse order." << endl;
        }
    }
    delete[] a;

}


搜索更多相关主题的帖子: C++ include 排序 int 标准库 
2023-10-01 22:43
快速回复:我遇到一个C++排序的问题故障,有大神能解决否?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021900 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved