- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我的程序
static void Main(string[] args)
{
int[] arrayToSort = new int[] { 5,4,9};
BubbleSort bubbleSort = new BubbleSort();
int [] SortedArray = bubbleSort.SortArray(arrayToSort);
foreach (int i in SortedArray)
Console.Write(i.ToString() + "," );
Console.WriteLine("Number of Iterations {0}",
bubbleSort.IterationsCounter);
Console.ReadLine();
}
public class BubbleSort
{
public int IterationsCounter;
public int[] SortArray(int[] arrayToSort)
{
for(int i = 0;i<arrayToSort.Length-1;i++)
{
if(arrayToSort[i]>arrayToSort[i+1])
{
int temp=arrayToSort[i];
arrayToSort[i]=arrayToSort[i+1];
arrayToSort[i+1]=temp;
//IterationsCounter++; Update:Moved this line out of if condition)
SortArray(arrayToSort);
}
IterationsCounter++; //Moved counter here:
}
return arrayToSort;
}
输出:
4,5,9 Number of Iterations:1
这怎么可能是对的?我的意思是数组已排序,但肯定有不止一次迭代。我期待它有 O(N^2) 运行时间,但这里有些问题。我没有正确计算迭代次数吗?
编辑:
好吧,我意识到 3 项是不够的,并且根据建议我将计数器从 if 中移出,如果现在我将输入更改为
5,4,9,2,3,1,17
迭代次数更改为 78
。那更好(在它应该高的意义上)但它还不够高。那么这意味着算法有 O(logn) 时间?我以为冒泡排序是 O(n^2)?
谢谢
最佳答案
您计算的是交换操作的次数,而不是迭代次数。冒泡排序的平均运行时间是O(n^2),并不是说每次冒泡排序都要进行那么多次迭代。例如,如果对排序数组进行冒泡排序,并在整个遍历数组后进行交换时设置标志。如果没有进行交换,那么应该清楚数组已经有序,因为不需要交换两个元素。在这种情况下,冒泡排序应该结束。它似乎比平均时间复杂度为 O(n log n) 的快速排序更快,因为在这种情况下改进的冒泡排序的性能为 O(N)。但您必须考虑一般情况。
关于c# - 我的 BubbleSort 类没有正确计算迭代次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606717/
我已经实现了 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
我是一名优秀的程序员,十分优秀!