回 帖 发 新 帖 刷新版面

主题:[讨论]帮忙看下这到快速排序算法哪里出错了

#include <iostream>
using namespace std;
void sort(int num[], int n);
int main()
{
    int number[] = {36,25,48,12,65,43,20,58};
    int m = sizeof(number) / sizeof(number[0]);
    cout <<"未排序前的数据: ";
    for(int i = 0; i < m; i++)
    {
        cout <<number[i]<<" ";
        
    }
    sort(number,m);
    cout <<"排序好的数据:";
    for(int j = 0; j < m; j++)
    {
        cout <<number[j]<<" ";
        
    }
    cout <<endl;
    return 0;
    
}

void sort(int num[], int n)
{
    
    int i,j,temp;
    for(i = 1; i < n; i++)
    {
        temp = num[i];
        for(j = i - 1; j >= 0; j--)
        {
            
            if(temp < num[j])
                num[j + 1] = num[j];
            else
                break;
            num[j + 1] = temp;
            
        }            
        
    }

回复列表 (共3个回复)

沙发

终于通过断点检查出来了,原来是num[j + 1] = temp;
错了,应该是num[j] = temp;

板凳

你这好像不是快速排序的方法啊!

3 楼

这是快速排序吗?这不是传说中的“插入”排序吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册