基本思想:
每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。
算法实现:
每一趟通过不断地比较交换来使得首元素为当前最小,交换是一个比较耗时间的操作,我们可以通过设置一个值来记录较小元素的下标,循环结束后存储的就是当前最小元素的下标,这时再进行交换就可以了。
解题思路:
首先用min和i指向数组的首元素,j指向i的下一个元素,用j来遍历整个数组,依次与下标为min的元素作比较,如果min大,则将下标j赋值给min,第一趟循环过后,如果min和i的值发生改变,则交换两下标的元素,这样循环到i指向最后一个元素的时候,排序结束。
参考代码:
#include<iostream>
using namespace std;
int main()
{
int a[10];
int i,j;
int temp,min;
for(i=0;i<10;i++)
{
cin>>a[i];
}
for(i=0;i<10;i++)
{
min=i;
for(j=i+1;j<10;j++)
{
if(a[min]>a[j])
{
min=j;
}
}
if(min!=i)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
for(i=0;i<10;i++)
{
cout<<a[i]<<endl;
}
system("pause");
return 0;
}
0.0分
1 人评分
C二级辅导-同因查找 (C语言代码)浏览:554 |
2^k进制数 (C++代码)使用递归方法浏览:721 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:650 |
C语言训练-大、小写问题 (C语言代码)浏览:2349 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:520 |
C语言训练-自由落体问题 (C语言代码)浏览:1731 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:604 |
兰顿蚂蚁 (C++代码)浏览:1090 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:885 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:459 |