select.c
来自「几种排序算法的C语言实现 用函数实现如下算法: (1) 直接插入排序, 希尔」· C语言 代码 · 共 76 行
C
76 行
*****************************************************************************
(二)选择式排序
*****************************************************************************
==============
1、选择排序法 (是最简单的排序方法)
==============
(稳定 平均时间复杂度 O(n*n) 空间复杂度O(n) )
方法:
从欲排序的n个数据中,以线性查找的方式找出最小的元素和第一个元素交换,再从剩下的(n-1)个
数据中,找出最小的元素和第二个元素交换,以此类推,直到所有的元素均已排序完成。
构思:
1、读入欲排序的数值。
2、使用选择排序法
2.1 找数列中最小值与数组第一个数值对调,打印目前排序结果
2.2 找数列中次小值与数组第二个数值对调,打印目前排序结果
2.3 以此类推,直到所有的元素均已排序完成
3、打印最终排序结果。
源代码:
void selectsort(int *list,int index)
{
int i,j,k;
int minnode; /*存储最小数值*/
int indexmin; /*存储最小数值的索引值*/
int temp;
for(i=0;i<index-1;i++)
{
minnode=32767; /*目前最小数值*/
indexmin=0;
for(j=i;j<index;j++)
{
if(list[j]<minnode) /*找到最小值*/
{
minnode=list[j]; /*将最小值存到变量minnode*/
indexmin=j;
}
temp=list[i];
list[i]=list[indexmin];
list[indexmin]=temp;
}
/*---打印目前排序结果---*/
printf("\n Current sorting result:");
for(k=0;k<index;k++)
printf("%d ",list[k]);
}
}
void main()
{
int list[20];
int i,index;
int node;
printf("\n Please input the values you want to sort(Exit for 0):\n");
index=0;
scanf("%d",&node);
while(!node)
{
list[index]=node;
index++;
scanf("%d",&node);
}
selectsort(list,index);
printf("\n Final sorting result:");
for(i=0;i<index;i++)
printf("%d ",list[i]);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?