我的中位数 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) 我一直在 Kernighan 和 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) 我正在努力寻找性能最佳的快速排序输入数组。我的数组长度为 100 个元素,由整数 1 到 100 组成。我选择最后一个元素作为主元值。
我知道我希望最后一个元素为 50,以便得到两个长度相等的子数组。然后我知道我希望元素 49 为 25,以便获得另一个事件拆分。
我对将原始 25 放在哪里有点困惑,以便在第一次分割后它位于位置 49。任何人都可以帮助我更好地理解该算法吗?
我不一定要寻找例子,而是要解释如何实现这些职位。我想要 10,100,1000...长度数组的答案。
我是编码的初学者,这是我的快速排序的 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) 我有一个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) 我正试图描述一个快速排序代码.代码如下:
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
Run Code Online (Sandbox Code Playgroud)
请帮帮我!
这个快速排序代码出了什么问题我输出错误输出:
#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) 我的程序(使用字母频率解密事物的解密器)有两个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) 快速排序:
计数排序:
快速排序和计数排序都是稳定的算法.
如果存在这两个条件,为什么快速排序仍然比计数排序更好?
我对算法,快速排序有疑问。有人可以解释一下我如何得出结果(证明)2T(n / 2)+?(n)吗?结果意味着:T(n-1)+?(n)。
感谢所有答案。