просто интересно, является ли это правильным способом выполнения алгоритма Bubble Sort.Я нашел это в интернете как способ сортировки по пузырям, но я не получил логику этого алгоритма, это алгоритм с веб-сайта:
int n = arr.length;
int temp = 0;
for(int i=0; i < n; i++)
{
for(int j=1; j < (n-i); j++)
{
if(arr[j-1] > arr[j])
{
//swap elements
temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
Я понимаю, что вам нужны вложенные циклы в Bubblesortоднако, часть, которую я не понимаю, это то, почему вам нужно
for(int j=1; j < (n-i); j++){
if(arr[j-1] > arr[j])
Зачем нужен "n минус 1" или "j минус 1", разве вы не можете просто получить два точных цикла for, например * 1007?* и for(int j=0; j < n; j++)
как вложенный цикл?Кто-нибудь может дать мне визуальное объяснение термина непрофессионала, почему это так.
Следовательно, я разработал алгоритм сортировки по пузырям с двумя точно такими же вложенными циклами.Но я не знаю, все ли в порядке.Вот код:
import java.lang.Math; // headers MUST be above the first class
import java.util.Arrays;
// one class needs to have a main() method
public class HelloWorld
{
// arguments are passed using the text field below this editor
public static void main(String[] args)
{
int integerArray [] = {4,6,1,3,2,8,678,122,12,29,57, -1};
int temporaryValue;
for (int i = 0; i < 11; i++) // integerArray.lenght
{
for(int j = 0; j<11; j++)
{
if (integerArray [j] > integerArray [j+1])
{temporaryValue = integerArray[j];
integerArray [j] = integerArray [j+1];
integerArray [j+1] = temporaryValue;
}
}
}
for (int j = 0; j < integerArray.length; j++)
{
System.out.print(integerArray[j]+",");
}
}
}