13、排序算法c语言描述---冒泡排序

排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析。

文章规划:

一。通过自己对排序算法本身的理解,对每个方法写个小测试程序。 具体思路分析不展开描述。

二。通过《大话数据结构》一书的截图,详细分析该算法 。 

在此,推荐下程杰老师的《大话数据结构》一书,当然不是打广告,只是以一名读者的身份来客观的看待这本书,确实是通俗易懂,值得一看。

ps:一个较为详细的学习链接   http://blog.csdn.net/MoreWindows/article/category/859207

 

①冒泡排序

一。个人理解

冒泡法思路:依次将相临的两个数进行比较,将小的数调到前面,从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。

算法本身比较简单,直接上代码。

[cpp]  view plain copy
  1. #include<stdio.h>  
  2. // 打印结果  
  3. void Show(int  arr[] , int n)  
  4. {  
  5.     int i;  
  6.     for ( i=0; i<n; i++ )  
  7.         printf("%d  ", arr[i]);  
  8.     printf("\n");  
  9. }  
  10. // 交换数组元素位置  
  11. void Swap( int *num_a, int *num_b )  
  12. {  
  13.     int temp = *num_b;  
  14.     *num_b = *num_a;  
  15.     *num_a = temp;  
  16. }  
  17. // 冒泡排序  
  18. void BubbleSort( int *arr, int n )  
  19. {  
  20.     int i, j, flag = 1;            // i,j控制循环,flag是个标志  
  21.     for( i=1; i<n && flag==1; i++ )    // 进行n-1次循环。  
  22.     {  
  23.        flag = 0;               //每次开始flag置零  
  24.        for( j=0; j<n-i; j++ )  
  25.        {                     //如果前一个数比后一个数大,交换位置  
  26.           if ( arr[j] > arr[j+1] )  
  27.           {  
  28.               Swap( &arr[j], &arr[j+1] );  
  29.               flag = 1;  //如果有数据交换,则flag为1  
  30.           }  
  31.        }  
  32.     }  
  33. }  
  34.   
  35. int main()  
  36. {   //测试数据  
  37.     int arr_test[10] = { 8, 4, 2, 3, 5, 1, 6, 9, 0, 7 };  
  38.     //排序前数组序列  
  39.     Show( arr_test, 10 );  
  40.     BubbleSort( arr_test, 10 );  
  41.     //排序后数组序列  
  42.     Show( arr_test, 10 );  
  43.     return 0;  
  44. }  


 

二。 《大话数据结构》一书截图分析

注:本文仅为分享知识,绝无商业用途。

如果以该种形式分享知识造成不必要的纠纷,还请第一时间告知。


 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值