c语言选择排序

embedded/2024/11/14 9:41:36/

选择排序思想:

反复地从未排序部分选择最小(或最大)的元素,将其放到已排序部分的末尾;

       首先用一个变量min来保存数组第一个元素的下标,然后用这个下标访问这个元素,将这个元素与它后面的元素相比较,如果后面的元素比它小,就交换这两个值;(从小到大)接着让min保存第二个元素的下标,然后再把第二个元素与后面的元素比较,再把最小元素的与第二个位置的元素交换,直到进行到倒数第二个元素就结束。

#include <stdio.h>
void select_sort(int *p,int n) //从第一个数开始,把后面每一个与第一个比较,将最小的数放在第一个,然后再让第二个数与后面的相比,直到排完
{int i, j, min;for(i=0;i<n-1;i++)  //循环判断比较的数为n-1个,最后一个不用比较{min = i;for(j=i+1;j<n;j++){if(p[j]<p[min])     //从小到大排,交换{int temp = p[min];p[min] = p[j];p[j] = temp;}}}
}
void selectSort(int arr[],int n) //从大到小
{int i, j, max;for(i=0;i<n-1;i++){max = i;     //每次循环都让max和i相同for(j=i+1;j<n;j++)if(arr[max]<arr[j])  //max下标对应的值与后面的数作比较,把最大数的下标给maxmax = j;if(max != i)       //判断下标i与max是否相同,不相同就交换下标中的值{int temp = arr[i];arr[i] = arr[max];arr[max] = temp;}}
}
int main(int argc, char *argv[])
{int arr[] = {64, 25, 12, 22, 11, 35};int n = sizeof(arr)/sizeof(arr[0]);selectSort(arr, n);printf("Sorted array: \n");for (int i=0; i < n; i++)printf("%d ", arr[i]);return 0;
}

解析:void select_sort(int *p,int n),对于这个函数使用的方法就是比较元素的大小,如果有比arr[min]更小的就进行位置交换,循环进行到最后就能得到从小到大排序的数组元素。 

void selectSort(int arr[],int n),这个函数形参为数组,在这里它会把数组当做指针,接受实参数组的首地址,这里面使用的也是选择排序的思想,但是在比较的时候并没有直接交换内容,而是将对应的下标给了变量max,之后再来判断max与循环一开始的i是否相同,如果不同就交换位置,这样也能实现排序。

    


http://www.ppmy.cn/embedded/137180.html

相关文章

百度世界2024:AI应用的浪潮时刻

百度AI公式&#xff1a;“技术商业社会”。 作者|金豫 编辑|杨舟 互联网行业正迈入增长瓶颈期&#xff0c;这一点从主要科技巨头&#xff0c;如Meta、Alphabet、腾讯等近年来的表现中可见端倪&#xff1a;广告收入增速放缓&#xff0c;市场渗透率接近饱和。 单纯依赖流量获取…

自动化测试策略 —— 新功能还是老功能的回归测试?

在软件开发过程中&#xff0c;自动化测试是一个关键组成部分&#xff0c;它有助于提高软件质量、减少手动测试的工作量&#xff0c;并加快产品上市时间。然而&#xff0c;面对有限的资源和时间&#xff0c;测试团队常常面临一个选择&#xff1a;是应该优先准备新功能的自动化测…

如何在 CentOS 6 上设置 NFS 挂载

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 关于 NFS&#xff08;网络文件系统&#xff09;挂载 NFS 挂载用于在多台服务器之间共享目录。这样做的优势在于节省磁盘空间&#xff0…

Android 读取内部文件

Android 读取内部文件 在Android开发中&#xff0c;我们经常需要读取应用程序内部的文件&#xff0c;这些文件包括配置文件、用户数据等。本文将介绍如何在Android应用程序中读取内部文件&#xff0c;并提供相应的代码示例。 内部存储空间 Android应用程序的内部存储空间是应…

SobarQube实现PDF报告导出

文章目录 前言一、插件配置二、使用步骤1.新生成一个Token2.将拷贝的Token加到上文中执行的命令中3.查看报告 三、友情提示总结 前言 这篇博文是承接此文 .Net项目在Windows中使用sonarqube进行代码质量扫描的详细操作配置 描述如何导出PDF报告 众所周知&#xff0c;导出PDF功…

<el-select> :remote-method用法

el-select :remote-method用法 说明代码实现单选多选 说明 在 Vue.js 中&#xff0c; 是 Element UI 库提供的一个下拉选择框组件。:remote-method 是 组件的一个属性&#xff0c;用于指定一个远程方法&#xff0c;该方法将在用户输入时被调用&#xff0c;以获取下拉列表的选项…

特征融合篇 | YOLO11改进 | 更换上采样方式之轻量级通用上采样算子CARAFE

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。CARAFE算子的主要特点是在保持轻量级功能的同时&#xff0c;能够提供比其他上采样算子更好的性能。它通过少量的参数和计算量来实现高效的图像上采样。CARAFE算子能够根据像素之间的关系进行自适应的上采样&#xff0c;从而…

【观察】华为持续投入开源开放“结硕果”,openEuler走出操作系统“创新路”...

毫无疑问&#xff0c;开源作为今天整个软件产业创新的“原动力”&#xff0c;目前在软件产业发展中的重要性愈加凸显。根据Linux基金会的统计&#xff0c;现在全球软件产业中有70%以上的代码来源于开源软件。 从这个角度来看&#xff0c;开源技术已逐渐成为推动企业数智化转型和…