冒泡排序

一、冒泡排序:
工做原理:依次相鄰元素進行比較,將小數放在前面,大數放在後面,每一次掃描是將最大的數放在最右邊,每次掃描完以後,下次掃描的個數減一,直到全部的數都放好位置。即第一次掃描:比較第一個數和第二個數,判斷大小,小數在前,大數在後,
接着比較第二個數和第三個數,依次比較,直到最後一個數。此時最大的數在最後一個位置上了。第二次掃描:比較從第一個數和第二個數,判斷大小,小數在前,大數在後,直到到倒數第二個數爲止。一樣的方法掃描n次。
本質是每掃描一次就拍好了一個最大值的位置,故叫作冒泡排序。

int [] a ={0,56,6,8,9,10};
int len = 6; //這裏要明白
         for(int i=0;i<len-1;i++) {  //這層循環控制的是須要排序的數的個數,即控制掃面的輪數
                  Boolean  IsChange=false;//這是冒泡改進的地方,增長一個標誌來判斷是否已經提早排好序了 //這裏要注意因爲比較的是在一個循環下前一個數跟後一個數比較
                  for(int j=0;j<len-i-1;j++) {   //這層循環是控制每一輪掃描以後,將最大的數放在最右邊 //這裏的j<len-i-1要注意邊界的緣由,因此是j<len-i-1
                      if(a[j]>a[j+1]){ //相鄰元素比較 ,交換
                          int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; IsChange=true;//若是一次掃描完以後都沒發生任何的交換,則代表已經排好序了
 } } if(!IsChange){ System.out.println("結束排序"+a); return; } }

二、插入排序:spa

工做原理:經過構建將整個待排序的序列分紅有序序列和無序序列,從無序序列當中選擇一個元素插入待有序序列中。這裏須要注意的是,最初將整個序列的第一個數做爲有序序列,後面n-1個數做爲無序序列。從無序序列選擇第一個數開始插入有序序列中,插入的方式是從右向左開始掃描有序序列,最右邊的數是有序序列中最大的數,依次比較,待排序的數比已排好的數小,則將已排好的數日後移,最後找出待插入的數合適的位置插入。code

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息