冒泡排序 & 選擇排序(升序)


軟件工程上老師講流程圖時,要求畫冒泡排序和選擇排序的流程圖--------問題來了,故想基於百度兩種排序后,自我總結的寫些什么

 

請將一維數組a[n] 里面的 n個元素  升序排好

---------------------------------------------------------

兩種排序的共同點:

外循環:趟數(n-1)  for( i=0; i<n-1; i++ )

內循環:比較次數(在n-1基礎上, 每趟后, 減1)   冒泡的 for( j=0; j<n-1-i; j++ )  /  選擇的 for( j=i+1; j<n; j++ )

---------------------------------------------------------------------

冒泡排序(升序)

特點:將兩個相鄰元素進行比較, 前 > 后   交換值! ==========》     為了將 “大” 值 往后面放 (氣泡越大越往上浮)

 1 //冒泡排序:
 2 int a[5] = {4,7,5,9,1};    int n = 5;
 3 
 4 int i,j;
 5 int temp;
 6 
 7 for(i=0; i<n-1; i++)    //外循環:趟數(n-1)
 8 {
 9     for(j=0; j<n-1-i; j++)    //內循環:次數(在n-1的基礎上,每趟后 減1)
10     {
11         if(a[j] > a[j+1])    //相鄰兩個元素比較,前>后 交換!
12         {
13             temp = a[j];
14             a[j] = a[j+1];
15             a[j+1] = temp;
16         }
17     }
18 }

流程圖:暫略

-----------------------------------------------------------------------------------

選擇排序(升序)

特點:定義一個min變量,用來存 “小” 元素  的下標,賦值:①min = i (i=0)。i:外循環, j:內循環;

在待排序的元素中,②內循環:if( a[min] > a[j] )  min = j;  //暫理解為數組元素的下標變了,但 元素的值是沒有變的;

找到 “小” 值后,③外循環:if( min != i )  { temp=&a[i];  &a[i]=&a[min];  &a[min]=temp;}  //將 “小”值 放到數組前面,這個元素(已排好序) 不參與后面的(未排好序) 比較了!

 1 //選擇排序:
 2 int a[5] = {4,7,5,9,1};    int n = 5;
 3 int i,j,min;
 4 int temp;
 5 
 6 for(i=0; i<n-1; i++)    //外循環:趟數(n-1)
 7 {
 8     min = i;
 9     for(j=i+1; j<n; j++)    //內循環:次數(在n-1的基礎上,每趟后 減1)
10     {
11         if(a[min] > a[j])
12             min = j;    //暫理解為數組元素的下標變了,但    元素的值是沒有變的
13     }
14 
15     if(min != i)
16     {
17         temp = &a[i];
18         &a[i] = &a[min];
19         &a[min] = temp;
20     }
21 }

流程圖:暫略(百度易得,實在懶得自己畫了)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM