简单选择 (c语言)排序

1.直接插入排序 insertionSort
2.希尔排序 shellSort
3.冒泡排序 bubbleSort
4.快速排序 partition分割 quickSort 快速排序
5.简单选择排序 selectionSort

第九单元:简单选择排序
属于:选择类排序s
稳定性: 不稳定的排序(存在着不相邻元素之间的比较和交换)
时间复杂度:O(n^2)
思想:第一趟选择最小的元素放在第一个位置上,第二趟选择第二小的元素放在第二个位置上…依次类推
n个元素采用简单选择排序 需要多少趟?n-1

n个记录采用简单选择排序 最好情况 需要多少趟?n-1 比较多少次?n*(n-1)/2 交换多少次? 0
n个记录采用简单选择排序 最坏情况 需要多少趟?n-1 比较多少次?n*(n-1)/2 交换多少次? n-1
注意:简单选择排序某一趟排序 最多交换1次 最少交换0次
简单选择排序某一趟排序的时间复杂度是O(n)

min 21, 25, 49, 25, 16, 8
min (1) 8 25 49 25 16 21*
min (2) 8 16 49 25 25 21*
min (3) 8 16 21 25 25 4*
min (4) 8 16 21 25 25 49 (5) 8 16 21 25* 25 49*

类 稳定性 时间复杂度
直接插入 插入类 稳定 O(n^2)
希尔 插入类 不稳定 O(n3/2)
冒泡 交换类 稳定 O(n^2)
快速 交换类 不稳定 O(n*log2n)
简单选择 选择类 不稳定 O(n^2)

下列排序算法中 任意一趟一定可以确定元素最终位置的有(CDE)
A 直接插入
B 希尔
C 冒泡
D 快速
E 简单选择

下列排序算法 比较的趟数和记录的初始状态无关的是
D B A
A 直接插入
B 希尔排序
C 优化的冒泡排序
D 简单选择排序

下列排序算法 比较的次数和记录的初始状态无关的是 (CD)
A 直接插入
B 希尔排序
C 普通的冒泡排序
D 简单选择排序

#define MAXSIZE 20
void selectionSort(float arr[],int len)//简单选择排序 按单价 升序排序     若单价降序?代码如何实现 
{
	int i; 
	int j; 
	float t;//交换变量 
	int  min;//记录最小元素的位置(下标) 
	for(i=0;i<len-1;i++)//外层循环控制趟数  0   -(len-2)
	{
		 min=i;
		 for(j=i+1;j<len;j++)//循环比较 
		 {
		 	if(arr[j]<arr[min])
		 	{
		 		min=j;//记录最小元素的位置(下标) 
			 }
		 }
		 if(min!=i)//交换 
		 {
		 	t=arr[min];
		 	arr[min]=arr[i];
		 	arr[i]=t;
		 }
	 } 
	
}
int  main()
{
	float arr[10];
	int i;
	for(i=0;i<10;i++)//循环录入10种商品的单价 
	{
		printf("请输入第%d种商品的单价:",i+1);
		scanf("%f",&arr[i]); 
		
	}
	selectionSort(arr,10);//调用函数
	for(i=0;i<10;i++)
	{
		printf("%.2f ",arr[i]);
	 } 
	
  return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
设计一个商品销售管理程序。该程序应该具有以下功能: (1)录入、修改、删除某商品信息; (2)显示所有商品信息; (3)按商品编号由小到大的顺序显示商品信息; (4)按商品销售数量从大到小的顺序显示商品信息; (5)按商品名称、商品编号、供货商等信息进行查询,若查询信息不存在,输出没找到的信息; (6)商品的销售; (7)统计缺货商品(可设定一个边界范围,如数量小于5,以便及时订货),并产生订货信息; (8)商品销售统计。 题目要求: (1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性; (2)商品信息应该包括商品编号、名称、规格、进货数量、销售数量、价格、供货商名称等; (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单则所需进行的操作项目,菜单要界面友好、清晰; (4)将所有商品信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理; (5)应保证测试用例测试程序的各种边缘情况。 输入要求: 应用程序运行后,在屏幕上显示一个菜单。用户可以根据需要,定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。 输出要求: (1)应用程序运行后,在屏幕上显示一个菜单。 (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林城步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值