标签: quicksort

中位数 3 快速排序实现

我的中位数 3 实现在这里不能正常工作。我必须随机选择 3 个数字作为中号,这是我的代码,请帮助我。

#include"stdafx.h"
#include <iostream>
#include<algorithm>
using namespace std;
#define size 10
int i;                               
void show(int* array, int n);
int partition(int* array, int pValue, int left, int right);
void QuickSort(int* array, int left, int right);

int main(void)
{
    int array[size];
    int i;

    for( i = 0; i < size; i++)              
    {
         array[i]=rand()%100;
    }

    cout<<endl<<"The random generated numbers are: "<<endl;
    show(array, size);
    QuickSort(array,0,size - 1);                
    cout<<endl<<"The sorted numbers are : "<<endl;
    show(array, size);

    system("pause");
    return 0;
}

void …
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm quicksort

0
推荐指数
1
解决办法
2万
查看次数

qsort 比较:为什么 const void *?

我一直在 Ke​​rnighan 和 Pike 合着的一本名为“编程实践”的书中学习 C 编程。根据本书中的材料,我编写了一个小程序来对命令行上给出的整数数组进行排序。

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 30

char *progname;
int arr[MAXSIZE];

int icmp(int *, int *);

int main(int argc, char *argv[]) {
    int i;
    progname = argv[0];
    if (argc == 1) {
        fprintf(stderr, "usage: %s [int ...]\n", progname);
        exit(1);
    }
    for (i = 0; argc > 1 && i < MAXSIZE; i++, argc--) {
        arr[i] = atoi(argv[i+1]);
    }
    int n = i;
    qsort(arr, n, sizeof(*arr), icmp);
    for (i = 0; i < n; …
Run Code Online (Sandbox Code Playgroud)

c int pointers quicksort qsort

0
推荐指数
1
解决办法
1900
查看次数

什么是快速排序的最佳输入数组

我正在努力寻找性能最佳的快速排序输入数组。我的数组长度为 100 个元素,由整数 1 到 100 组成。我选择最后一个元素作为主元值。

我知道我希望最后一个元素为 50,以便得到两个长度相等的子数组。然后我知道我希望元素 49 为 25,以便获得另一个事件拆分。

我对将原始 25 放在哪里有点困惑,以便在第一次分割后它位于位置 49。任何人都可以帮助我更好地理解该算法吗?

我不一定要寻找例子,而是要解释如何实现这些职位。我想要 10,100,1000...长度数组的答案。

sorting algorithm quicksort

0
推荐指数
1
解决办法
2439
查看次数

这个快速排序程序有什么问题?

我是编码的初学者,这是我的快速排序的 C 程序。不过似乎有些错误,因为对于数组{6,76,32,18,9,90,43,45,3,1},输出结果为{1,3,6,9,18,32,45,43,76,90}. 不知道为什么45要来43

#include <stdio.h>

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int partition(int list[], int l, int r) {
    int pi = l;
    int too_big = l + 1;
    int too_small = r;

    while (too_big < too_small) {
        while (list[too_big] <= list[pi] && too_big < r)
            too_big++;
        while (list[too_small] > list[pi] && too_small > l)
            too_small--;
        if (too_big < too_small) …
Run Code Online (Sandbox Code Playgroud)

c sorting quicksort data-structures

0
推荐指数
1
解决办法
95
查看次数

使用数值数据对 std::vector&lt;std::string&gt; 进行排序

我有一个vector<string>容器,但字符串都是数字

编辑:我尝试过这个:

所以现在逻辑似乎很无聊

清理了这个,但是尝试将 std::string 转换为 int 的各种尝试很难,lamba 是无用的,并且我已经没有了在没有出现任何错误的情况下转换 std::string 的想法

template<typename Iterator>void bubbleSort(Iterator first, Iterator last){
    Iterator i, j;
    for (i = first; i != last; i++)
        for (j = first; j < i; j++)
            if (*i < *j)
                std::iter_swap(i, j); // or std::swap(*i, *j);
}
Run Code Online (Sandbox Code Playgroud)

我读取源数据的代码是

void loadgames(void) { // read the game app id's
ifstream inFile;
ofstream outFile;
string s;
inFile.open("game-list.txt");
if (inFile.is_open()) {
    while (std::getline(inFile, s)) {
        if(s.length() > 0)
            gamelist.push_back(s); 
    };
    inFile.close(); …
Run Code Online (Sandbox Code Playgroud)

c++ quicksort

0
推荐指数
1
解决办法
294
查看次数

Quicksort + Profiling

我正试图描述一个快速排序代码.代码如下:

qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
Run Code Online (Sandbox Code Playgroud)

请帮帮我!

profiling haskell quicksort

-1
推荐指数
1
解决办法
255
查看次数

这个快速排序代码有什么问题

这个快速排序代码出了什么问题我输出错误输出:

#include<stdio.h>

void quick_sort(int A[], int start, int end) {
    int pIndex;

    if (start < end) {
        pIndex=partion(A,start,end);
        quick_sort(A,start,pIndex-1);
        quick_sort(A,pIndex+1,end);
    }

}

int partion(int A[], int start, int end) {
    int i, temp, pIndex = start;
    int pivot = A[end];

    for (i = start; i < end; i++) {
        if (A[i] <= pivot) {
            temp = A[i];
            A[i] = A[pIndex];
            A[pIndex] = A[i];
            pIndex++;
        }
    }

    temp = A[pIndex];
    A[pIndex] = A[end];
    A[end] = temp;
    return pIndex;
}

int main() …
Run Code Online (Sandbox Code Playgroud)

c sorting quicksort

-1
推荐指数
1
解决办法
58
查看次数

Java快速排序返回部分排序列表

我的程序(使用字母频率解密事物的解密器)有两个ArrayLists,用于跟踪字母频率.我将这些ArrayLists配对,使得一个(输入中的字符列表)始终链接到另一个(输入中的频率列表),以便索引i中的字符始终对应于索引i处的频率在另一个.我使用了一个快速排序算法按降序排序.以下是quicksort和swap方法的代码:

private static void quickSort(int low, int high){


    int i = low;
    int j = high;
    long middle = freqInCiphertext.get((low+high)/2);

    while (i < j) {
        while (freqInCiphertext.get(i) > middle) {
            i++;
        } //End while
        while (freqInCiphertext.get(j) < middle) {
            j--;
        }//End while
        if (j >= i) {
            swap(i, j);
            i++;
            j--;
        } // End if
    } // End while


    if (low<j) {
        quickSort(low, j);
    } else if (i<high) {
        quickSort(i, high);
    } //end if
}//End quickSort

private static void swap(int …
Run Code Online (Sandbox Code Playgroud)

java sorting quicksort

-2
推荐指数
1
解决办法
406
查看次数

为什么快速排序比计算排序更好?

快速排序:

  • 最坏情况o(n ^ 2)
  • 平均情况O(nlogn)

计数排序:

  • 在所有情况下o(n)

快速排序和计数排序都是稳定的算法.

如果存在这两个条件,为什么快速排序仍然比计数排序更好?

c sorting algorithm quicksort counting-sort

-2
推荐指数
1
解决办法
2984
查看次数

我如何证明快速排序的主定理

我对算法,快速排序有疑问。有人可以解释一下我如何得出结果(证明)2T(n / 2)+?(n)吗?结果意味着:T(n-1)+?(n)。

感谢所有答案。

algorithm math quicksort

-3
推荐指数
1
解决办法
2531
查看次数