举例出第一趟:
从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;
}
运行结果:
/*有问题欢迎指出哈哈*/
|