选择排序,和冒泡排序的区别

#include <stdio.h>
#define N 10
int main()
{//从大到小
    int a[N]={2,17,8,3,24,53,82,1,29,101};
    int i,j,k,t;
    for(i=0;i<9;i++)
    {       k=i;//a
        for(j=i+1;j<10;j++)
        {    //  b    a
            if(a[j] > a[k])    //这是拿固定元素来比较,是选择排序
                                   //如果k没有变化,说明是最大的,不需要换所以应该取反
        {
            t=a[j];//交换两个位置 a[i]和最后一个比他大的换位置,后面再换
            a[j]=a[i];
            a[i]=t;
        }
        }
    }
    for(i=0;i<9;i++)
        printf("%d ",a[i]);
    return 0;
}


选择排序
k是不会变化的(因为k是确定哪一个擂台),意味着一直在拿这个位置上的元素和他后 个元素进行比较,如果比他小,就会换数字,然后继续进行比较,也就是,一轮下来,可以直接把最大的放在最前面。
//相当于第一个for是提供擂台

冒泡排序
除了最后一个元素都要进行比较,通过第二层循环进行比较,每一次比较都要判断和换位置,每次都是最多要判断的次数,把最大或者最小的数放在 最后 ,是进行的两个相邻元素比较(突然说的不太清楚冒泡排序)

发布了18 篇原创文章 · 获赞 0 · 访问量 203

猜你喜欢

转载自blog.csdn.net/weixin_46456339/article/details/105145487