如何停止此代码的迭代我正在使用选择排序算法,如果数组已经排序,我希望迭代停止
Posted
技术标签:
【中文标题】如何停止此代码的迭代我正在使用选择排序算法,如果数组已经排序,我希望迭代停止【英文标题】:How to stop the iterations of this code i am using the selection sort algorithm and i want the iterations to stop if the array is already sorted 【发布时间】:2021-08-12 16:24:48 【问题描述】:这是我当前的代码,我放置了额外的 foreach,所以我可以看到迭代。我需要在数组已经排序后立即停止代码,我想到的是休息;如果程序两次打印相同的数组,则使用布尔值,因为这意味着已经没有更改并且数组已经排序。
static void Main(string[] args)
int[] array = 12, 114, 5, 10, 14 ;
foreach (int item in array) Console.Write("\t" + item);
Console.WriteLine("\n Press Enter key to start the selection...");
Console.ReadLine();
for (int i = 0; i < array.Length - 1; i++)
int indexofSmallests = i;
//comparison to find the smallest element in the unsorted array
for (int j = i + 1; j < array.Length; j++)
if (array[j] < array[indexofSmallests])
indexofSmallests = j;
//swapping part of the program
int temp = array[i]; // temporarily storing the first element
array[i] = array[indexofSmallests]; // copying of the smallest element
array[indexofSmallests] = temp;
foreach (int item in array) Console.Write("\t" + item);//Code so i can see the iterations
Console.ReadLine();
Console.WriteLine("\n Sorted Array: ");// printing the final iterations
foreach (int item in array) Console.Write("\t" + item);
Console.ReadLine();
【问题讨论】:
目标是什么?只是为了学习?通常你会使用内置的排序方法,如果你想要一个非常简单的排序,插入排序有更好的最佳情况性能。 【参考方案1】:您需要检查内部循环期间是否需要排序:
bool stopSort = true;
for (int j = i + 1; j < array.Length; j++)
if (array[j] < array[indexofSmallests])
indexofSmallests = j;
if (array[j] < array[i])
stopSort = false;
if (stopSort)
break;
【讨论】:
以上是关于如何停止此代码的迭代我正在使用选择排序算法,如果数组已经排序,我希望迭代停止的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试使用 c++ STL 制作 prims 算法。在迭代器第一次迭代后,它会停止代码并给出错误的输出