举例出第一趟:
从a[0]开始找

第一趟排序后:

第二趟从a[1]开始……
(随机生成我这里就指定10以内的了哈,方便看运行结果)
-
程序(升序):
#include<stdio.h>
#include<stdlib.h>
#include<time.h>/*
对用随机函数生产的10个整数
进行升序 ————选择排序
*/
void p(int a[],int n)
{int i,j,index;int temp;int m;for(i = 0; i < n-1; i++){index=i;for(j = i + 1;j < n; j++){ //寻找最小值if(a[index]>a[j]) //a[i]若不是最小index=j; //记录最小值下标}if(index !=i) //最小值和第i个记录进行互换{temp=a[i];a[i]=a[index];a[index]= temp; //a[i]的值赋给被交换的位置}}return 0;
}
int main()
{int a[10], i ;srand((unsigned int)time(0));printf("随机生成的10个数为:");for(i=0;i<10;i++){a[i]=rand() %10;printf("%d ",a[i]);}p(a,10);printf("\n排序结果为:");for(i=0;i<10;i++){printf("%d ",a[i]);}
}
-
运行结果:
(分步看)

(整体看)

降序的话
这里刚刚是“>”,改成“<”就好了
函数代码:
/*
降序 ————选择排序
*/
void p(int a[],int n)
{int i,j,index;int temp;int m;for(i = 0; i < n-1; i++){index=i;for(j = i + 1;j < n; j++){ //寻找最小值if(a[index]<a[j]) //a[i]若不是最小index=j; //记录最小值下标}if(index !=i) //最小值和第i个记录进行互换{temp=a[i];a[i]=a[index];a[index]= temp; //a[i]的值赋给被交换的位置}}return 0;
}
运行结果:
/*有问题欢迎指出哈哈*/