Tag: 排序

按字典顺序打印所有排列

我想以字典顺序打印字符串的所有排列。 我写这段代码: void permute(char *a, int i, int n) { if (i == (n-1)) printf(“\”%s\”\n”, a); else { for (int j = i; j < n; j++) { swap((a+i), (a+j)); permute(a, i+1, n); swap((a+i), (a+j)); } } } 我有例如字符串abc ,所以我希望以左列中的字典顺序接收所有排列,但是我的结果与右列相同。 “abc” “abc” “acb” “acb” “bac” “bac” “bca” “bca” “cab” “cab” 有人可以帮我弄这个吗? 我看到了一些算法,但看起来很难。 我想我可以在数组中保存所有生成的字符串,然后对这个数组进行排序,但是我不能写这个(我是C语言的初学者)。

如何按值排序数组(排序)? *扭曲*

我想使用C/C++按升序对数组进行排序。 结果是包含元素索引的数组。 每个索引都与排序数组中的元素位置相对应。 例 Input: 1, 3, 4, 9, 6 Output: 1, 2, 3, 5, 4 编辑:我正在使用shell排序程序。 基于哪个重复值首先在原始数组中任意选择重复值索引。 更新: 尽管我付出了最大的努力,但我还是无法为指针数组实现排序算法。 当前示例将无法编译。 有人可以告诉我有什么问题吗? 我非常感谢一些帮助! void SortArray(int ** pArray, int ArrayLength) { int i, j, flag = 1; // set flag to 1 to begin initial pass int * temp; // holding variable orig with no * […]

如何按字母顺序对字符串数组进行排序(区分大小写,非标准排序规则)

我需要ac语言代码来排序一些字符串,它应该区分大小写, 对于大写和小写的相同字母,小写必须首先 。 例如,以下字符串的排序结果: eggs bacon cheese Milk spinach potatoes milk spaghetti 应该: bacon cheese eggs milk Milk potatoes spaghetti spinach 我写了一段代码,但结果是: Milk bacon cheese eggs milk potatoes spaghetti spinach 我不知道如何改进这个,我已经搜索了很多。 任何人都可以帮我这个吗? #include #include int main(){ char c; char name[20][10], temp[10]; int count_name = 0; int name_index = 0; int i, j; while ((c = […]

在C中排序链表

我被要求编写一个函数,它接受3个未排序的链表并返回一个组合所有三个列表的单个排序链表。 您能想到的最佳方式是什么? 我没有真正的内存限制,但你有/没有内存限制你会做什么?

QuickSort和Hoare分区

我很难将QuickSort与Hoare分区转换为C代码,但无法找到原因。 我正在使用的代码如下所示: void QuickSort(int a[],int start,int end) { int q=HoarePartition(a,start,end); if (end x); do i++; while (a[i] < x); if (i < j) swap(&a[i],&a[j]); else return j; } } 另外,我真的不明白为什么HoarePartition有效。 有人可以解释它为什么有效,或者至少把我链接到一篇文章吗? 我已经看到了分区算法的逐步完成,但我没有直观的感觉。 在我的代码中,它似乎甚至没有用。 例如,给定数组 13 19 9 5 12 8 7 4 11 2 6 21 它将使用数据透视表13,但最终会使用数组 6 2 9 5 12 8 7 4 […]

如何在C中输入指向char的指针数组?

假设我在C中有一个指向char的指针数组: char *data[5] = { “boda”, “cydo”, “washington”, “dc”, “obama” }; 我希望使用qsort对这个数组进行排序: qsort(data, 5, sizeof(char *), compare_function); 我无法想出比较function。 出于某种原因,这不起作用: int compare_function(const void *name1, const void *name2) { const char *name1_ = (const char *)name1; const char *name2_ = (const char *)name2; return strcmp(name1_, name2_); } 我做了很多搜索,发现我必须在qsort里面使用** : int compare_function(const void *name1, const void *name2) { […]

Carrays排序技巧

a=[1,3,6,7,1,2] 哪个是排序以下数组的最佳排序技术,如果有重复,如何处理它们。 也是最好的分拣技术…. void BubbleSort(int a[], int array_size) { int i, j, temp; for (i = 0; i < (array_size – 1); ++i) { for (j = 0; j a[j+1]) { temp = a[j+1]; a[j+1] = a[j]; a[j] = temp; } } } }