问题描述
我不需要帮助每次通过九次比较,而是需要修改气泡排序以在第二次通过八次比较,在第三次通过七次,等等.然后,我需要它在每个通道的末尾检查是否进行了任何交换.如果未进行任何操作,则数据必须已经按照正确的顺序进行,因此应用程序应终止.如果进行了交换,则至少需要再传递一次.我需要添加或更改代码来进行这些修改?
Instead of making nine comparisons on every pass, I need help modifing the bubble sort to make eight comparisons on the second pass, seven on the third pass and so on. Then I need it to check at the end of each pass whether any swaps have been made. If none have been made, the data must already be in the proper order, so the application should terminate. If swaps have been made, at least one more pass is needed. What do I need to add or change to my code to do these modifications?
namespace Enhanced_Bubble_Sort
{
class Program
{
static void Main(string[] args)
{
int[] unsortedArray = new int[] { 23, 7, 10, 138, 2098, 2, 0, -5 };
Console.WriteLine("UNSORTED");
for (int i = 0; i < unsortedArray.Length; i++)
{
Console.WriteLine(unsortedArray[i]);
}
int[] sortedArray = BubbleSort(unsortedArray);
Console.WriteLine("BUBBLE SORTED");
for (int i = 0; i < sortedArray.Length; i++)
{
Console.WriteLine(sortedArray[i]);
}
Console.ReadLine();
}
private static int[] BubbleSort(int[] unsortedArray)
{
int length =unsortedArray.Length;
for (int i = 0; i < length - 1; i++)
{
for (int j = 0; j < length - 1 - i; j++)
{
if(unsortedArray[j] > unsortedArray[j + 1])
{
int num = unsortedArray[j];
unsortedArray[j] = unsortedArray[j + 1];
unsortedArray[j + 1] = num;
}
}
}
return unsortedArray;
}
}
}
推荐答案
Loop on i:
Save i
Set i to exit value
Loop on j:
if Out-of-order
Swap
Restore i
请注意,这是一个非经典的解决方案,您的老师会对此感兴趣.
Beware that this is a non-classical solution, your teacher will be intrigued.
这篇关于气泡排序修改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!