• 排序算法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]处理,即完成排序。

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

    #include<stdio.h>
    // 打印结果
    void Show(int  arr[] , int n)
    {
        int i;
        for ( i=0; i<n; i++ )
            printf("%d  ", arr[i]);
        printf("
    ");
    }
    // 交换数组元素位置
    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;
    }
    
    


     

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

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

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

  • 相关阅读:
    ES6之主要知识点(二) 变量的解构赋值。默认值
    ES6之主要知识点(一)
    前后端通信
    js 面向对象类
    typeof 、Object.prototype.toString和 instanceof
    原型链 之 对象的创建
    Ueditor1.4.3.3+springMvc+maven 实现图片上传
    Hibernate 根据实体名称得到DB表名以及表对应的Sequence name
    第三章:对象的共享——java并发编程实战
    第二章:线程安全性——java并发编程实战
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3241498.html
Copyright © 2020-2023  润新知