Tag: 排序

链接列表插入排序

我在编程的排序部分还不是很先进,所以我正在寻找我的算法的一些帮助。 void sortList() { Item_PTR tmpNxt = current->nextItem; Item_PTR tmpPTR = current; int a, tmp; while(tmpNxt != NULL) { a = tmpPTR->value; while(tmpNxt != tmpPTR && tmpNxt->value value = tmpNxt->value; tmpNxt->value = tmp; tmpPTR = tmpPTR->nextItem; } tmpPTR = current; tmpNxt = tmpNxt->nextItem; } } 排序前的清单状态:9 8 7 6 5 4 3 2 1排序后:1 9 […]

如何在大型输入集中更快地在C中进行这种排序程序

对于非常大的输入文件数据,此排序代码会失败,因为它需要很长时间才能完成。 rewind(ptr); j=0; while(( fread(&temp,sizeof(temp),1,ptr)==1) &&( j!=lines-1)) //read object by object { i=j+1; while(fread(&temp1,sizeof(temp),1,ptr)==1) //read next object , to compare previous object with next object { if(temp.key > temp1.key) //compare key value of object { temp2=temp; //if you don’t want to change records and just want to change keys use three statements temp2.key =temp.key; temp=temp1; […]

C可以在编译时排序吗?

是否可以在C中编译时对元素进行排序? 语法是次要的,我正在考虑这样的宏: SORT(9, -1, 12, 4) // expands to: -1, 4, 9, 12 SORT(dog, cat, cow) // expands to: cat, cow, dog 但是我不会对任何API皱眉,只要它排序而不发出单个CPU指令。 要求非常宽松: 纯C,没有C ++ 。 保持在C标准内会很好,但已建立的语言扩展是公平的游戏。 编译器是唯一允许的工具 。 Unix sort或自制代码生成器不受欢迎,因为它们使构建步骤复杂化。 任何元素类型都可以 。 如果它可以排序例如数字而不是字符串,那就没关系。 固定长度的API很好 。 必须调用SORT_5来排序5个元素SORT_5 。 我意识到解决方案可能会使用一些几乎没有编译的语言巫术,我只是想知道它是否可能。

是否可以使用预处理器对数组进行排序?

我有很多很长的数组。 无法进行运行时排序。 手动排序也很耗时。 此外,可以在以后以任何顺序添加新元素,因此我想使用C预处理器按值对它们进行排序,或者可能有任何编译器标志(GCC)? 例如: sometype S[] = { {somevals, “BOB”, someothervals}, {somevals, “ALICE”, someothervals}, {somevals, “TIM”, someothervals}, } 必须排序如下: sometype S[] = { {somevals, “ALICE”, someothervals}, {somevals, “BOB”, someothervals}, {somevals, “TIM”, someothervals}, } 解决了 好的,这是我的解决方案: 手动将每个数组复制并粘贴到名为tobesorted.c的临时文件中 按第二列sort -b -i –key=2 tobesorted.c : sort -b -i –key=2 tobesorted.c 将输出复制并粘贴回原始文件。 实际上,有一种可能性直接从预处理器调用“排序”会很好(我希望至少GCC能以某种方式支持这些function,但似乎它没有)。

C ++并行排序

我需要对存储在结构数组中的数据块进行排序。 结构没有指针。 每个块具有其计数器编号和位于数组块中的位置的坐标,其中数据块等于结构块。 例如,如果我们有一个数据数组,我们可以划分为4个NxN块,我们在结构块的索引数组中有4个结构块,每个结构块在数据数组中有自己的数量和位置,借助我们可以计算使用索引块在数据数组中的块的指针。 应该使用比较器进行排序,该比较器以这样的方式比较两个块,使得两个块中的至少一个具有最少的第i个数据。 例如比较器: for( i = 0; i < N * N; ++i ) { if( a[i] b[i] ) return 1; } 其中a和b是指向数据数组块的指针,由于索引数组和数据数组开始的指针,我们可以得到它们。 排序不应该排序数据数组而是排序索引数组。 所以问题是:我可以使用哪种并行算法(除了框架,库,我需要完全算法或标准语言工具包,如pthread或qt libs,或c / c ++标准库)以避免同步错误? 代码或伪代码也会有所帮助。

如何按名称(字符串)搜索和排序BST? 按队列打印并缩进?

我必须编写一个程序,将.txt文件读入树中,然后允许用它执行特定的操作。 我被困在我需要按名称排序树并按名称搜索的部分,任何输入都会很棒。 所以,我的输入文件格式为: 3800 Lee, Victor; 2.8 3000 Brown, Joanne; 4.0 所以,我的二叉树格式为: typedef struct { int id; char name[MAX_NAME_LEN]; float gpa; } STUDENT; typedef struct node { STUDENT* dataPtr; struct node* left; struct node* right; } NODE; typedef struct { int count; int (*compare) (void* argu1, void* argu2); // Was provided by teacher, not really […]

在多列上对二维数组进行排序

我需要使用C或C ++在多列上对二维二维数组进行排序。 有人能指出我应该使用的算法还是具有此function的现有库(可能是boost?)? 我有一种感觉,写一个递归函数可能是要走的路,但我懒得写出算法或自己实现它,如果它已在其他地方完成。 🙂 谢谢

3路快速排序(C实现)

我尝试使用C 实现一些纯通用的算法。我坚持使用3向快速排序但不知何故实现不能提供正确的输出。 输出几乎排序,但有些键不在应有的位置。 代码如下。 提前致谢。 #include #include #include #include static void swap(void *x, void *y, size_t size) { void *tmp = malloc(size); memcpy(tmp, x, size); memcpy(x, y, size); memcpy(y, tmp, size); free(tmp); } static int cmpDouble(const void *i, const void *j) { if (*(double *)i < *(double *)j) return 1; else if (*(double *)i == […]

MPI Odd-Even排序如何工作?

只是在面试之前查看一些注释,并且正在努力理解Odd-Even排序在并行体系结构中是如何工作的。 int MPI_OddEven_Sort(int n, double *a, int root, MPI_Comm comm) { int rank, size, i, sorted_result; double *local_a; // get rank and size of comm MPI_Comm_rank(comm, &rank); //&rank = address of rank MPI_Comm_size(comm, &size); local_a = (double *) calloc(n / size, sizeof(double)); // scatter the array a to local_a MPI_Scatter(a, n / size, MPI_DOUBLE, local_a, […]

c链表中的冒泡排序

我需要做的是将输入文件读入链表。 部分文件是: NameA,25 NameB,33 NameC,23 姓名D,39 之后我需要按数字排序(冒泡排序)并将其写入另一个文件。 这是我有的: #include #include #include struct node{ char name[20]; int number; struct node *next; struct node *prev; }*head; int main(void) { struct node *temp; temp = malloc(sizeof(struct node)); temp->next = NULL; head = temp; FILE *ifp; char fnamer[100] = “”; char line[128]; // printf(“\n\nPlease Enter the Full Path of […]