选择算法_C

本文详细介绍了选择排序算法的工作原理,包括其选择最小元素并逐步放置在已排序部分的过程,以及它的时间复杂度(O(n^2))、空间复杂度(O(1))和非稳定性特点。还提供了C语言实现示例。
摘要由CSDN通过智能技术生成

十大经典排序

选择排序

选择排序是一种简单直观的排序算法。它的基本思想是每次从未排序的数列中选择最小(或最大)的元素,放到已排序序列的末尾(或开头),直到全部元素排序完成。

稳定性平均时间复杂度空间复杂度
不稳定O(n2)O(1)

gif动图

在这里插入图片描述

#include<stdio.h>
void swap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
void selection_sort(int arr[], int len)
{
  int i, j;
  for (i = 0; i < len - 1; i++)
  {
    int min = i;
    for (j = i + 1; j < len; j++)
      if (arr[min] > arr[j])
        min = j;
    swap(arr + i, arr + min);
  }
}
void selection_print(int arr[],int len)
{
  for(int i=0;i<len;++i)
  printf("%d ",arr[i]);
}
int main()
{
  int arr[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50 ,48 };
  int len=15;
    selection_sort(arr,len);
    selection_print(arr,len);
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值