首页 > 其他分享 >选择排序

选择排序

时间:2024-06-01 11:22:08浏览次数:13  
标签:arr min int 选择 arrsize 数组 printf 排序


// 通过指针交换两个元素的值
void swap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
/****************************************************************
 * name;SeletSort
 * function:sort
 * parameter;
 *              @int arr[]
 *              @int arrsize
 *
 * ReValue;none
 * author;小北blog
 * attention;none
 * date;2024.06.01
 * history;
 * version;
 * Copyright(c) 2024 [email protected] All rights reserved
 *****************************************************************/
void SeletSort(int arr[], int arrsize)
{
    // 定义需要的变量,数组最小值下标min,和当前需要选择比较的变量的下标j
    int i, j, min;
    for (i = 0; i < arrsize - 1; i++) // 把第一个元素当有序序列
    {
        min = i;                          // 用下标的方式把第一个数当最小
        for (j = i + 1; j < arrsize; j++) // 从后面的数开始比较
        {
            if (arr[j] < arr[min]) // 判断
            {
                min = j; // 更新最小值下标
            }
        }
        if (min != i) // 最小
        {
            swap(&arr[min], &arr[i]); // 找到最小交换
        }
    }
}
// 打印数组
void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}
// 主函数
int main()
{
    int arr[] = {66, 77, 44, 11, 99, 55};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("原来的数组: \n");
    printArray(arr, n);
    SeletSort(arr, n);
    printf("排序后的数组: \n");
    printArray(arr, n);
    return 0;
}

验证结果:

总结: 选择排序的中心思想就是找到最小值。
把数组看成两个不同的数组,前面部分的当成有序的数组,后面部分的当成无序数组,过程是在该数组上进行操作的
,重点是把最左边的数字当成是有序数组a,后面的当成无序,在无序里面找最小放在有序的右边,就如基因编码一样,然后循环偏移下标找到每组最小的值。

标签:arr,min,int,选择,arrsize,数组,printf,排序
From: https://www.cnblogs.com/ikunkunkun/p/18225731

相关文章

  • 快速排序分区法
    //通过指针交换两个元素的值voidswap(int*a,int*b){inttemp=*a;*a=*b;*b=temp;}/*****************************************************************name;subzone*function:partzone*parameter;*@intarr[]*......
  • 一对一直播软件源码,比较常用的数组排序方式有哪些?
    一对一直播软件源码,比较常用的数组排序方式有哪些?一、简单的sort排序:vararr=[1,5,3,87,23];arr.sort(function(a,b){returna-b;})console.log(arr);//输出:[1,23,3,5,87] 注:若返回b-a可获得从大到小的排序;数组的sort方法只能实现简单的按位排序,并不精......
  • java通过冒泡排序对数组进行排序
    冒泡排序是从列表第一个元素开始,比较相邻两个元素大小,小的排在前面,大的排后面,循环反复,小的数据会像气泡那样上浮。packageproject;publicclassMaopaopaixu{ publicstaticvoidmain(String[]args){ //冒泡排序 int[]arr={9,8,3,5,2}; for(inti=0;i<arr.le......
  • Scanner的进阶使用、顺序结构和选择结构
    Java流程控制02:Scanner的进阶使用一道练习题packagecom.xiwen.scanner;importjavafx.beans.binding.DoubleExpression;importjava.util.Scanner;publicclassDemo05{publicstaticvoidmain(String[]args){//我们可以输入多个数字,并且要求其......
  • Session+Redis,Token+Redis,JWT+Redis,用户身份认证,到底选择哪种更合适?
    1三中方案的比较在选择Session+Redis、Token+Redis、JWT+Redis这三种用户身份认证方案时,我们需要考虑各自的优势、劣势以及应用场景。以下是对这三种方案的详细分析和比较:1.Session+Redis优势:Session登录是一种在Web应用程序中用于跟踪用户状态的机制,通过在服务器端存储......
  • Java If选择结构
    1.if单选择结构    if(布尔表达式){        //如果布尔值表达式为true将执行的语句    }2.if双选择结构    if(布尔表达式){        //如果布尔表达式的值为true        }else{        ......
  • 如何选择国产数据库?
    ORACLE的强大是全方位的,作为甲方DBA,喝喝咖啡,看看报纸,开开会,临听一下ORACLEACE吹水!  作为国企的DBA,CTO.基本上国企都算是传统行业,都是跑ERP系统,进销存系统.客户关系系统.基本上都是B2B业务. 直接面对普通老百姓的互联网业务非常少. 核心业务都是使用ORACLE,少量......
  • mysql针对中文和数字字段进行排序
    场景1field函数的使用field(str,str1,str2,str3,str4…)字段str按照字符串1、字符串2、字符串3、字符串4的顺序返回查询到的结果集。如果表字段值str不存在,放在结果集的最前面subString如七年级1班,想要截取第一个字符,就是substring(user_name,1,1),第一个参数写字段,第二个参数......
  • QT实现对文件名进行排序
    QStringListQDir::entryList(QDir::Filtersfilters=NoFilter,QDir::SortFlagssort=NoSort)const,该成员函数实现根据路径获取该文件夹下文件,其中QDir::SortFlags是一个枚举类型,各个常量参照QT的官方文档:QDirfiledir(dir_path);QStringListfilenames=filedir.entryL......
  • 数据结构排序算法之直接插入排序与希尔排序【图文详解】
    P.S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。P.S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。                                             博主主页:LiUEEEEE         ......