当前位置: 首页 > article >正文

考研要求掌握的C语言(选择排序)

选择排序的特点

每次进行一趟排序后,就确定一个数据的最终位置

选择排序的原理

就是假设你是最小(最大数据)的下标,然后和其他进行比较,若发现还有比你还小(或还大)的数据,就更新下标,直到挨个遍历后,确定最终的下标进行交换数据,就是把你和最终所确定的下标进行数据交换

核心代码实战

//选择排序
 void select_sort(int nums[],int len)
 {
    for(int i = 0;i<len;i++)
    {
        int min = i;//假设最小值的下标就是当前位置的值
        for(int j=i+1;j<len;j++)
        {
            if(nums[j]<nums[min])
            {
                min=j;
            }
        }
    //交换值,这一趟下来确定该元素的最终位置
        swap(nums[min],nums[i]);
    }
 }

 

 完整代码可运行

#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
 
void swap(int &a,int &b)
{
    int tmp=a;
    a=b;
    b=tmp;
}
 
 
void rangnums(int nums[],int len)
{
    srand(time(NULL));
    //初始化数组
    printf("初始化数组:");
    for(int i=0;i<len;i++)
    {
        nums[i]=rand()%100+1;
        printf("%d ",nums[i]);
    }
    puts("");
}
 
void print(int a[],int len)
{
    for(int i=0;i<len;i++)
    {
        printf("%d ",a[i]);
    }
    puts("");
}
 
 //选择排序
 void select_sort(int nums[],int len)
 {
    for(int i = 0;i<len;i++)
    {
        int min = i;//假设最小值的下标就是当前位置的值
        for(int j=i+1;j<len;j++)
        {
            if(nums[j]<nums[min])
            {
                min=j;
            }
        }
        //交换值,这一趟下来确定该元素的最终位置
        swap(nums[min],nums[i]);
        printf("第%d趟结果为:",i+1);
        print(nums,len);
    }
 }

 
 
int main()
{
    int a[10]={92 ,79 ,49, 59, 86 ,38, 94, 64, 92, 3};
    rangnums(a,10);
    select_sort(a,10);
    print(a,10);
    
}


http://www.kler.cn/a/387763.html

相关文章:

  • 【贪心算法】No.1---贪心算法(1)
  • Apache ECharts
  • C++数据结构算法学习
  • 大数据学习12之HBase
  • 移远通信亮相骁龙AI PC生态科技日,以领先的5G及Wi-Fi产品革新PC用户体验
  • Android Studio | 最新版本配置要求高,JDK运行环境不适配,导致无法启动App
  • 给cantian建议的第二篇
  • 备忘录模式:保存对象状态的设计模式
  • Python脚本模拟远程网络探测
  • 动态规划理论基础和习题【力扣】【算法学习day.26】
  • MYSQL隔离性原理——MVCC
  • 实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
  • mac-泛洪
  • 我的 C# 白盒测试学习路线
  • [C++11] 类中新特性的添加
  • 网页版五子棋——匹配模块(服务器端开发)
  • 梧桐数据库与GBase日期函数比较
  • C++ 越来越像函数式编程了!
  • linux devfreq 模块
  • flink 内存配置(五):网络缓存调优
  • video素材格式转换--mp4转webm(vue3+Nodejs)
  • 如何运营Github Org
  • Hunyuan-Large:推动AI技术进步的下一代语言模型
  • 刘艳兵-DBA027-在Oracle数据库,通常可以使用如下方法来得到目标SQL的执行计划,那么通过下列哪些方法得到的执行计划有可能是不准确的?
  • 鸿蒙next版开发:ArkTS组件自定义事件拦截详解
  • 腾讯混元3D模型Hunyuan3D-1.0部署与推理优化指南