码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序算法和选择排序算法

时间:2016-06-28 09:33:18      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

    这是最基本的两种排序算法,比它效率高的还有归并排序,堆排序,快速排序等算法,作为一个IT民工应该好好掌握。

    冒泡排序和选择排序都有两层循环,下面逐一介绍:

    冒泡排序:

    1.外层循环,控制冒泡次数,起始从loop=1开始,结束标识是loop<length,循环length-1次(从数组的第二个数开始冒泡)。

    2.内层循环,选出对应轮的最大数,即第K轮冒泡选出的是第N-k-1大的数,故循环从loop=0开始,结束标志loop<N-k,循环N-k次。

    选择排序:

    1.外层循环,控制比较次数,第i轮设置min_index=i为最小值,结束标志loop<length-1.

    2.内存循环,循环找到本轮最小值的小标loop_min_index并判断是否交换,循环结束标志为loop<length.

下面是自己实现的两种算法最简单的代码,没有做很多测试,有错还请指正:

技术分享
void BubbleSort(int *a, int length)
{
    if(length < 2)
    {
        return;
    }
    for(int i=1; i<length; ++i)
    {
        for(int j=0; j<length-i; ++j)
        {
            if(a[j] > a[j+1])
            {
                int temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
}
void SelectionSort(int *a, int length)
{
    if(length <2)
    {
        return;
    }
    for(int i=0; i<length-1; ++i)
    {
        int min_index = i;
        for(int j=i+1; j<length; ++j)
        {
            if(a[j] < a[min_index])
            {
                min_index = j;
            }
        }
        if(min_index != i)
        {
            int temp = a[i];
            a[i] = a[min_index];
            a[min_index] = temp;
        }
    }
}
View Code

 

冒泡排序算法和选择排序算法

标签:

原文地址:http://www.cnblogs.com/bestwangjie/p/5622236.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!