2017-01-27 32 views
-3

它应该按照升序排列数组成员。任何人都可以请解释一步一步在泡沫排序过程。使用气泡排序的升序程序

//bubble sorting technique to sort the integer in ascending order 
      int n = 5; 
      int limit = n- 1;//elements from 0 to n-1 
      boolean flag = false;//if it is true,swapping is done 
      int temp;// temporary variable 
      for(int i=0 ; i<limit; i++){ 
      for(int j = 0;j<limit-i;j++){ 
      //if first element is bigger than second one , then swap 
      if(arr[j] > arr[j+1]) 
      { 
      temp = arr[j]; 
      arr[j] = arr[j+1]; 
      arr[j+1] = temp;//true->swapping done 
      flag = true; 
      } 
      if(flag==false) break;//no swapping,so come out 
      else flag = false;//assign initial value 
      } 
      //display sorted array 
      system.out.println("the sorted array is") 
      for(int i=0;i<5;i++) 
      system.out.println(arr[i]); 
      } 

输入:50 23 11 99 23

输出:11 23 23 50 99

+4

请勿垃圾标签。而且泡泡在保守的一个五十万个网站上是无限的解释,[如**这个**](https://en.wikipedia.org/wiki/Bubble_sort)。 – WhozCraig

+1

[Bubble sort Animation](https://upload.wikimedia.org/wikipedia/commons/5/54/Sorting_bubblesort_anim.gif) –

+0

我认为你的代码有效{50,23,11,99,23} - > {23 ,11,50,99,23}→{11,23,50,99,23}→11,23,50,99,23}→11,23,50,99,23}。这是错的吗? – square1001

回答

0

你的最后部支柱是错行,以便你得到"the sorted array is"输出为每个外循环周期。向上移动3行:

 if (flag==false) 
      break; 
     else 
      flag = false; 
     } 
} // Move it here 
system.out.println("the sorted array is") 
for(int i=0;i<5;i++) 
system.out.println(arr[i]);