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 + -
显示快捷键?