排序算法c语言描述---冒泡排序
2013-08-06 19:11
281 查看
排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析。
文章规划:
一。通过自己对排序算法本身的理解,对每个方法写个小测试程序。 具体思路分析不展开描述。
二。通过《大话数据结构》一书的截图,详细分析该算法 。
在此,推荐下程杰老师的《大话数据结构》一书,当然不是打广告,只是以一名读者的身份来客观的看待这本书,确实是通俗易懂,值得一看。
ps:一个较为详细的学习链接 http://blog.csdn.net/MoreWindows/article/category/859207
。同理对a[1],a[2],...a[n-1]处理,即完成排序。
算法本身比较简单,直接上代码。
如果以该种形式分享知识造成不必要的纠纷,还请第一时间告知。
文章规划:
一。通过自己对排序算法本身的理解,对每个方法写个小测试程序。 具体思路分析不展开描述。
二。通过《大话数据结构》一书的截图,详细分析该算法 。
在此,推荐下程杰老师的《大话数据结构》一书,当然不是打广告,只是以一名读者的身份来客观的看待这本书,确实是通俗易懂,值得一看。
ps:一个较为详细的学习链接 http://blog.csdn.net/MoreWindows/article/category/859207
①冒泡排序
一。个人理解
冒泡法思路:依次将相临的两个数进行比较,将小的数调到前面,从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a。同理对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; }
二。 《大话数据结构》一书截图分析
注:本文仅为分享知识,绝无商业用途。如果以该种形式分享知识造成不必要的纠纷,还请第一时间告知。
相关文章推荐
- 13、排序算法c语言描述---冒泡排序
- 排序算法c语言描述---冒泡排序
- 排序算法c语言描述---基数排序
- 排序算法c语言描述---计数排序
- 排序算法c语言描述---堆排序
- 排序算法c语言描述---桶排序
- 排序算法c语言描述---选择排序
- 排序算法c语言描述---归并排序
- 交换排序——冒泡排序和快速排序——C语言描述
- 交换排序——冒泡排序和快速排序——C语言描述
- 使用PHP描述冒泡排序和快速排序算法
- 排序算法c语言描述-快速排序随机化
- PHP描述冒泡排序和快速排序算法
- PHP 数据结构 算法描述 冒泡排序 bubble sort
- 14、排序算法c语言描述---选择排序
- 常用的排序算法C语言描述与分析
- 15、排序算法c语言描述---直接插入排序
- 冒泡排序(C语言描述)
- [php]数据结构&算法(PHP描述) 冒泡排序 bubble sort
- 16、排序算法c语言描述---希尔排序