经典算法之直接选择排序

简介: 经典算法之直接选择排序


订阅专栏

作者简介:大家好我是小唐同学(๑>؂<๑),为梦想而奋斗的小唐,让我们一起加油!!!

个人主页:小唐同学(๑>؂<๑)的博客主页

系列专栏:数据结构

博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里

牛客网支持ACM模式哦,刷算法题也很推荐哦!!!

下面上文章------》

目录

刷题图示:

编辑

算法介绍:

输入:

输出:

图示过程:

实例演示:

代码展示:

时间复杂度:

空间复杂度:

刷题网站图示:

算法介绍:

直接选择排序也称为简单选择排序,整个过程就是每一趟都将无序区中的所有元素进行逐一比较,找到最小元素(根据要求可以最大-降序)让后与无序区首个元素进行比较

输入:

我们可以把n个数的序列放到数组中(可有序可无序)

输出:

输出一个有序数列(升序或降序)

图示过程:

实例演示:

初始关键字:『 8,5,2,6,10,3,1,4,0,7 』

第一趟排序后:0,『5,2,6,10,3,1,4,8,7』

第二趟排序后:0,1,『2,6,10,3,5,4,8,7』

第三趟排序后:0,1,2,『6,10,3,5,4,8,7』

第四趟排序后:0,1,2,3,『10,6,5,4,8,7』

第五趟排序后:0,1,2,3,4,『6,5,10,8,7』

第六趟排序后:0,1,2,3,4,5,『6,10,8,7』

第七趟排序后:0,1,2,3,4,5,6,『10,8,7』

第八趟排序后:0,1,2,3,4,5,6,7,『8,10』

第九趟排序后:0,1,2,3,4,5,6,7,8,『10』

直接得出最后结果:0 1 2 3 4 5 6 7 8 10

代码展示:

# include <stdio.h>
int a[100];
int main()
{
  int n;
  scanf("%d",&n);
  a[n];
  for(int i=0;i<n;i++)
  {
    scanf("%d",&a[i]);
  }
  int k;
  for(int i=0;i<n-1;i++)
  {
    for(int j=i+1;j<n;j++)
    {
      if(a[i]>a[j])
      {
        k=a[i];
        a[i]=a[j];
        a[j]=k;   
      }
    }
  }
  for(int i=0;i<n;i++)
  {
    printf("%d ",a[i]);
  }
 } 

测试结果:

时间复杂度:

因为有两层for循环  而且每个都要进行比较 所以时间复杂度为O(n^2);

空间复杂度:

只有一空间变量 k,所以它空间复杂度则为常数O(1);


相关文章
|
1月前
|
搜索推荐 算法 C语言
C语言选择排序算法,从入门到精通只需1秒!
C语言选择排序算法,从入门到精通只需1秒!
|
4月前
|
机器学习/深度学习 存储 算法
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
|
4月前
|
搜索推荐 算法 C#
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
46 1
|
5月前
|
算法 搜索推荐 索引
Python算法——选择排序
Python算法——选择排序
56 0
|
12天前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解
|
1月前
|
搜索推荐 Java
Java实现选择排序算法
Java实现选择排序算法
14 0
|
1月前
|
搜索推荐 Python
Python实现选择排序算法
Python实现选择排序算法
19 1
|
2月前
|
搜索推荐 算法 索引
【数据结构排序算法篇】----选择排序【实战演练】
【数据结构排序算法篇】----选择排序【实战演练】
23 0
|
2月前
|
搜索推荐
直接选择排序算法
直接选择排序算法
13 0
|
3月前
|
搜索推荐 Python
【Python排序算法系列】—— 选择排序
【Python排序算法系列】—— 选择排序
14 0