C语言选择排序

1.选择排序(Selection sort)

选择排序是简单直观的排序算法。

基本思想:从首元素开始,首元素与它后面的所有元素进行比较,找到数列中最小的元素,与首元素值交换。然后下一个元素与它后面的元素比较,得到第二小的元素,与之交换。

cs 复制代码
void swap(int* x, int* y)
{
	int temp;
	if (*x > *y)
	{
		temp = *x; 
		*x = *y;
		*y = temp;
	}
}
void xuanzepx(int* a,int size )//选择排序
{
	int i = 0, j = 0;
	int temp;
	for (i = 0; i < size-1; i++)//拿一个数与它后面的数作比较
	{
		for (j = i+1; j < size; j++)
		{
			if (a[i] > a[j])
			{
				swap(&a[i],&a[j]);
			}
		}
	}
}
 void main()
{
	 int str[] = {10,9,8,7,5,6,4,1,2,3};
	 int zf = sizeof(str) / sizeof(str[0]);//数组元素个数
	 xuanzepx(str,zf);
	 for (int i = 0; i < zf; i++)
	 {
		 printf("%3d", str[i]);
	 }
}

下标为0的元素与他后面的所有元素比较,找到数组中最小的元素值为止,下标为0的元素值与最小元素值进行交换。位置并没有交换。然后下标为1的元素与它后面的所有元素比较,找到最小的元素值为止(此时为第二小的元素值),下标为1的元素值与最小的元素值进行交换。位置并没有交换。接着下标为2为3为...


上面swap是自己写的交换值的函数,不是系统自带的。用的是指针。

指针是变量的首地址。当你把地址给指针变量后,指针就能访问并改变里面的内容。

相关推荐
刚入坑的新人编程36 分钟前
暑期算法训练.10
数据结构·c++·算法·排序算法
字节高级特工37 分钟前
【Linux篇】补充:消息队列和systemV信号量
linux·运维·服务器·c语言·数据库
Star在努力3 小时前
15-C语言:第15~16天笔记
c语言·笔记·算法
SoveTingღ5 小时前
【C语言】数组和指针一样吗?
c语言·unix·指针·数组·嵌入式软件
晨非辰7 小时前
#C语言——学习攻略:深挖指针路线(三)--数组与指针的结合、冒泡排序
c语言·开发语言·数据结构·学习·算法·排序算法·visual studio
找不到、了13 小时前
Java排序算法之<归并排序>
算法·排序算法
香蕉可乐荷包蛋13 小时前
排序算法 (Sorting Algorithms)-Python示例
python·算法·排序算法
Sylvia-girl13 小时前
排序查找算法,Map集合,集合的嵌套,Collections工具类
java·算法·排序算法
TT哇13 小时前
【分治】归并排序——排序数组(medium)
java·算法·排序算法
aiprtem14 小时前
LVGL + ESP-Brookesia 嵌入式模拟桌面应用开发
linux·c语言·物联网