前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C 冒泡排序和选择排序

C 冒泡排序和选择排序

作者头像
Mr.RisingSun
发布2022-05-09 10:47:19
5290
发布2022-05-09 10:47:19
举报
文章被收录于专栏:移动端开发

冒泡排序

      理论概念: 从第一个数开始,将相邻的两个数比较,第一个数和第二个数比较,比如说是从小到大的排序,要是后面的数比前面的小则交换两个的位置,这样第一轮比较基数后最大的数就到了最后面,接着进行第二轮的比较,比较到前面N-1个数,原理也是前面的那样,大的往后面不停的排,直到比较到前面只剩下一个数的时候,就完成了排序,这就是冒泡的原理:

      第一层循环控制的是我们需要比较多少轮,每比较一轮我们的第二层就少比较一个值,因为最值已经被设置到最前面或者最后面。

      第二层循环控制的就是两个相邻的数的比较,但由于前面说的每比较一轮我们的第二层就少比较一个值,所以这个循环控制比较的个数和第一轮是有关系的,这样就好理解for循环边界值的问题。

冒泡排序的代码:

代码语言:javascript
复制
#include "stdio.h"
#define N 10

int main(){

      int a[N];
      int i,j,t;
      printf("请输入您要排序的%d 数字\n",N);

      /*输入十个数*/
      for(i=0;i<N;i++)
      scanf("%d",&a[i]);
      /*冒泡*/
      for(j=0;j<N-1;j++){

        for(i=0;i<N-j;i++){

           if(a[i] > a[i+1]){

               t = a[i];
               a[i] = a[i+1];
               a[i+1] = t; 
           }
        } 
     }
     printf("排序的结果是:");
     for(i=0;i<N;i++){

        printf("%d ",a[i]);
     }
}

下面是写的过程中出现的错误分析:

选择排序 

      理论概念:选择排序,就像是打擂台一样,我们先选第一个位置的数为基准位置,后面的一个一个挑战,(比如我们从小到大排序),要是第二个数比第一个数小,则更换值(这时候值换了,但擂主的标记位置还是第一个)再比较第三个,要是比第一个又小,再换,直到一轮比赛结束,找到最小的在前面,接着我们开始第二轮,第二轮以第二个数为基准。后面的还是按照前面的逻辑比较,直到最后一个数,这样就整个排序过程出来了。

      第一层循环控制的就是我们设置的擂主的标记,这里只设置一直比较到倒数第二个即可。

      第二层就是后面一个个挑战的选手,要是一旦发现符合比较条件的,就交换他们的值,在接着和后面比较。

快速排序的代码:

代码语言:javascript
复制
#include "stdio.h"
#define N 10
int main( ){

   int i,j,t,k;
   int a[N];

    printf("请输入你要排序的%d个整数",N);

   for(i=0;i<N;i++)
      scanf("%d",&a[i]);

   /*注意这里不能写成N 不然下面的 j 会越界*/
   for(i=0;i<N-1;i++){

      k=i;
      for(j=i+1;j<N;j++){
         if(a[k]>a[j])  k=j;
      }
      if(k!=i){

         t= a[i];
         a[i] = a[k];
         a[k] = t;
      }
   }

  printf("最终排序的结果是:");
     for(i=0;i<N;i++)
      printf("%d ",a[i]);
}

上面就OK,这里没有什么错,最后看一下结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档