zoukankan      html  css  js  c++  java
  • 两个排序算法

    好几天没写博客了,最近要考试了,有c语言。本来准备就为了应付考试,随便学一下的,然后准备下学期用c来学习数据结构和算法,可是,看了一些视频,就准备入坑c/c++了。。。。自己学了将近一个学期的c#,就这样放弃感觉还是有些小舍不得呢。。。不过,技术都是有共同性的,也不算是浪费时间了

    然后贴代码:

     1 int num[10];
     2     time_t tms;
     3     srand((unsigned int)time(&tms));//生成种子
     4     for (int i = 0; i < 10; i++)//生成数组元素为10 的数组
     5     {
     6         num[i] = 100 + rand() % 100;
     7         printf("%d
    ", num[i]);
     8     }
     9 
    10 
    11     //冒泡排序
    12     for (int i = 0; i < 10 - 1; i++)
    13     {
    14         
    15         for (int j = 0; j < 10 - 1 - i; j++)
    16         {
    17             //int max=0;//num为下标
    18             if (num[j]>num[j+1])
    19             {
    20                 int tmp = num[j];
    21                 num[j] = num[j+1];
    22                 num[j+1] = tmp;
    23             }
    24         }
    25     }
     1 int num[10];
     2     time_t tms;
     3     srand((unsigned int)time(&tms));//生成种子
     4     for (int i = 0; i < 10; i++)//生成数组元素为10 的数组
     5     {
     6         num[i] = 100 + rand() % 100;
     7         printf("%d
    ", num[i]);
     8     }
     9 
    10 
    11     //选择排序
    12     for (int i = 0; i < 10; i++)
    13     {
    14         int max=0;//最大数的下标,开始默认为第一个数
    15         for (int j = 0; j < 10  - i; j++)
    16         {
    17             
    18             if (num[max] < num[j])
    19             {
    20                 max = j;
    21             }
    22         }
    23 
    24         int tmp = num[10 - 1 - i];
    25         num[10 - 1 - i] = num[max];
    26         num[max] = tmp;
    27 
    28     }

    上面就是冒泡排序和选择排序的实现代码了

    冒泡排序呢,就是每一次都从头开始冒泡,选出大的那个,继续往后面冒,一轮下来,最大的就冒到最后面了,下一轮冒泡可以找到倒数第二大的数放在倒数第二的位置。。。。反复。。。。

    选择排序呢,就是每一次都找出最大数的下标,然后将最大的数放到最后。

    我个人认为,这两种排序方法本质上都是一样的,都是比较之后交换,冒泡交换的是数值本身,而选择交换的是数组的下标。

    就纯int型数字数组来言的话,我觉得效率基本是一样的,因为数组的下标和数组中元素的sizeof都是一样的,是4个字节。

    当然,这些都是我瞎想的,具体到底是怎样的,相信以后我学了数据结构和算法之后,能够得到正确的答案。

  • 相关阅读:
    Python爬虫一
    Python爬虫二
    DRF框架中的演变View
    计算时间复杂度例题
    vue2.x webpack打包资源路径问题
    vs code运行c语言 控制台乱码 问题
    解决视频的声音和画面不同步问题
    c语言数据结构,静态链表,结构体数组
    swagger @ApiModel添加实体类不生效
    计算及校验海明码的3个举例
  • 原文地址:https://www.cnblogs.com/yinmo/p/4245017.html
Copyright © 2011-2022 走看看