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是自己写的交换值的函数,不是系统自带的。用的是指针。

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

相关推荐
2401_8920709811 分钟前
链栈(链式栈) 超详细实现(C 语言 + 逐行精讲)
c语言·数据结构·链栈
cmpxr_4 小时前
【C】局部变量和全局变量及同名情况
c语言·开发语言
网域小星球6 小时前
C 语言从 0 入门(十七)|结构体指针 + 动态内存 + 文件综合实战
c语言·开发语言·文件操作·结构体指针·动态内存·综合项目
lcj25117 小时前
【C语言】数据在内存中的存储
c语言·数据结构
特立独行的猫a8 小时前
OpenHarmony平台移植 gifsicle:C/C++ 三方库适配实践(Lycium / tpc_c_cplusplus)
c语言·c++·harmonyos·openharmony·三方库适配·lycium
yashuk11 小时前
C语言 vs. C++ ,哪个更适合初学者?
c语言·c++·面向对象编程·初学者·学习路径
泛凡(Linyongui)11 小时前
PY32F002B实践之四--宠物腹背理疗仪项目踩坑及项目总结复盘
c语言·keil·32位单片机·腹背理疗仪项目实践·普苒py32
Hello小赵11 小时前
C语言如何自定义链接库——编译与调用
android·java·c语言
磊 子11 小时前
八大排序之冒泡排序+选择排序
数据结构·算法·排序算法
JaneHan_11 小时前
STM32CubeMX+HAL+Keil5 PWM呼吸灯
c语言·stm32·单片机