1. 程式人生 > >排序演算法c語言描述---氣泡排序

排序演算法c語言描述---氣泡排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

排序算法系列學習,主要描述氣泡排序,選擇排序,直接插入排序,希爾排序,堆排序,歸併排序,快速排序等排序進行分析。

文章規劃:

一。通過自己對排序演算法本身的理解,對每個方法寫個小測試程式。 具體思路分析不展開描述。

二。通過《大話資料結構》一書的截圖,詳細分析該演算法 。 

在此,推薦下程傑老師的《大話資料結構》一書,當然不是打廣告,只是以一名讀者的身份來客觀的看待這本書,確實是通俗易懂,值得一看。

ps:一個較為詳細的學習連結   http://blog.csdn.net/MoreWindows/article/category/859207

 

①氣泡排序

一。個人理解

冒泡法思路:依次將相臨的兩個數進行比較,將小的數調到前面,從a[0]開始,依次將其和後面的元素比較,若a[0]>a[i],則交換它們,一直比較到a[n]。同理對a[1],a[2],...a[n-1]處理,即完成排序。

演算法本身比較簡單,直接上程式碼。

#include<stdio.h>// 列印結果void Show(int  arr[] , int n){    int i;    for ( i=0; i<n; i++ )        printf("%d  ", arr[i]);    printf("\n");}// 交換陣列元素位置void Swap( int *num_a, int *num_b )
{    int temp = *num_b;    *num_b = *num_a;    *num_a = temp;}// 氣泡排序void BubbleSort( int *arr, int n ){    int i, j, flag = 1;            // i,j控制迴圈,flag是個標誌    for( i=1; i<n && flag==1; i++ )    // 進行n-1次迴圈。    {       flag = 0;               //每次開始flag置零       for( j=0; j<n-i; j++ )       {                     //如果前一個數比後一個數大,交換位置          if ( arr[j] > arr[j+1] )          {              Swap( &arr[j], &arr[j+1] );              flag = 1//如果有資料交換,則flag為1          }       }    }}int main(){   //測試資料    int arr_test[10] = { 8, 4, 2, 3, 5, 1, 6, 9, 0, 7 };    //排序前陣列序列    Show( arr_test, 10 );    BubbleSort( arr_test, 10 );    //排序後陣列序列    Show( arr_test, 10 );    return 0;}


 

二。 《大話資料結構》一書截圖分析

注:本文僅為分享知識,絕無商業用途。

如果以該種形式分享知識造成不必要的糾紛,還請第一時間告知。


 

 

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述