- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试根据指针指向的字符串对指针数组进行排序。我的 bubblesort 实现似乎忽略了我传递给它的最后一个元素。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void swap(char **a,char **b);
int main(void);
int main(void)
{
char *ptr[1000]; //build an array of 1000 pointers
short ptrpos = 0; //start at 0th pointer
char input[500];
printf("Enter strings(names), seperate by newline\nEOF(Ctrl-D) finishes the input process.\n");
while(fgets(input,sizeof(input),stdin))
{
ptr[ptrpos] = malloc(strlen(input)+1);
strcpy(ptr[ptrpos],input);
ptrpos++;
}
short length = ptrpos-1;
//BEGIN BUBBLE SORT
for(short h = 1; h < length; h++)
{
for(short i = 0;i < length - h; i++)
{
if(strcmp(ptr[i],ptr[i+1]) > 0)
swap(&ptr[i],&ptr[i+1]);
}
}
//END BUBBLE SORT
printf("\n----- Sorted List -----\n");
for(ptrpos = 0;ptrpos <= length;ptrpos++)
printf("%s",ptr[ptrpos]);
return 0;
}
void swap(char **a,char **b) //swaps adresses of passed pointers
{
char *temp = *a;
*a = *b;
*b = temp;
}
输出看起来像这样:
Enter strings(names), seperate by newlineEOF(Ctrl-D) finishes the input process.EchoCharlieFoxtrotAlphaGolfBravoDelta----- Sorted List -----AlphaBravoCharlieEchoFoxtrotGolfDelta
为什么忽略最后一个字符串?我是否遗漏了一些明显的东西?
最佳答案
数字只是示例。
ptrpos
从 0
开始计数这意味着如果你有 6 个元素,ptrpos
是6
在你的 while
的最后一次迭代之后环形。当您使用
short length = ptrpos-1;
你得到 length = 5
.
你的 for
-循环终止于 counter < length
这意味着它们只计数到 4,这会产生 5 个元素而不是 6 个。
由于数组的实际长度是6,我建议你把提到的那行改成
short length = ptrpos;
现在length
将等于数组中元素的数量。
关于c - Bubblesort 忽略最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50736629/
我已经实现了 BubbleSort 算法的代码,但它返回了一个奇怪的错误,您能告诉我问题是什么吗? public class BubbleSort { public static int[]
这是我对冒泡排序算法的实现。 import java.util.Arrays; public class BubbleSort { public static void main(Stri
我尝试使用 BubbleSort 按卡片的值对卡片进行排序,但在使用相同的卡片或具有相似值的卡片时遇到了一些问题。 import java.util.HashMap; public class Kar
我的冒泡排序代码只交换第一个数组项。所有其他项目都保留为 0。我认为我的嵌套循环是错误的,或者我还没有能够正确诊断它。所以这是我的代码。 public void swap(int i, int
这段代码: #include #define SIZE 10 int main(){ int a[SIZE]={2,6,4,8,10,12,89,68,45,37}; int pas
我正在尝试根据指针指向的字符串对指针数组进行排序。我的 bubblesort 实现似乎忽略了我传递给它的最后一个元素。 #include #include #include void swap(
我尝试用 C++ 编写基本的冒泡排序,但现在我被卡住了。任何想法为什么这可能行不通?我想这对更有经验的人来说是显而易见的,但对我来说不是。 liczba_liczb 是数组单元格的个数,niePoso
为什么选择冒泡排序而不是其他排序算法? 最佳答案 你不会。 杜克大学的 Owen Astrachan 曾写过一篇追溯冒泡排序历史的研究论文 (Bubble Sort: An Archaeologica
有一个类似于此的冒泡排序例程。我需要通过在数组排序时或数组已经排序时停止循环来提高效率。 function sortNumbers(listbox) { var x, y, holder; /
这是一个非常简单的问题。我用冒泡排序代码在线查看,看起来我也在做同样的事情。这是我带有模板的完整 C++ 代码。但是输出有点奇怪! #include using namespace std; tem
我一直在尝试学习排序类的泛型实现,但收到此错误:“无法从类型 Comparator 中对非静态方法compare(T, T) 进行静态引用”(第 14 行) . 为什么我会收到此消息?我还没有声明我的
该程序创建一个名为 datafile.txt 的文件,并使用文本 I/O 将随机创建的 100 个整数写入该文件。我还实现了 bubbleSort 以升序对数字进行排序,但它没有对它们进行排序。另外,
这段代码可能看起来很糟糕,我是一个初学者程序,所以让我的代码更好的提示会有很大帮助。我想知道如何使 bubbleSort() 全局修改数组值?目前我在 main 中填充数组,它适用于搜索方法,但后来我
没有匹配函数来调用“bubbleSort”。我在同一个 .hpp 文件中有这两个函数。 template void bubbleSort(std::vector &vec){ T zacase
我更改了我的代码,但仍然无法弄清楚为什么它不会对数组进行排序...冒泡排序仅将所有元素在我的程序中向右移动一个位置,而不是对数组进行排序...我厌倦了 bsort 和 ssort,两者都做同样的事情1
我正在尝试为结构数组实现递归冒泡排序。但是,当我按员工姓名对数组进行排序时,它给出了错误的输出。我不知道我错过了什么。感谢您的帮助。 #include #include // GLOBAL VARIA
使用 Python 进行冒泡排序算法的示例该算法在两个方向上对列表的元素进行排序 def bubbleSort_UpDown(alist,ite): up=True d=0 f
这是我的程序 static void Main(string[] args) { int[] arrayToSort = new int[] { 5,4,9};
我正在研究对 array[n] 中的整数 [1,n] 的每个可能组合进行排序所需的遍数背后的数学原理。 例如,n = 3,则有 3! = 6 数字的可能排列: 1,2,3 - 1,3,2 - 2,1,
嘿,我对 Bubblesort 进行了运行时分析,我想问你是否有任何错误,因为我在某个时候不确定 这里是算法的摘录: boolean sorted = false; while(!so
我是一名优秀的程序员,十分优秀!