经典算法之直接选择排序

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


订阅专栏

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

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

系列专栏:数据结构

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

牛客网支持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);


相关文章
|
2月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
24 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
2月前
|
搜索推荐 Java Go
深入了解选择排序算法
深入了解选择排序算法
29 4
|
2月前
|
搜索推荐 算法
【排序算法(一)】——插入排序,选择排序 —> 深层解析
【排序算法(一)】——插入排序,选择排序 —> 深层解析
|
2月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序
34 0
|
4月前
|
搜索推荐 算法 Java
经典排序算法之-----选择排序(Java实现)
这篇文章通过Java代码示例详细解释了选择排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过选择排序对数组进行升序排列。
经典排序算法之-----选择排序(Java实现)
|
6月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
6月前
|
搜索推荐
排序算法---选择排序-----详解&&代码
排序算法---选择排序-----详解&&代码
|
6月前
|
算法 搜索推荐
数据结构与算法-选择排序
数据结构与算法-选择排序
34 4
|
6月前
|
搜索推荐 算法
【C/排序算法】:堆排序和选择排序
【C/排序算法】:堆排序和选择排序
40 0
|
6月前
|
算法 搜索推荐 Java
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
44 0