c++中,详细讲解一下选择排序法。
收起
知与谁同
2018-07-22 10:38:13
1442
0
2
条回答
写回答
取消
提交回答
-
云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
#include <iostream>
#include <valarray>
using namespace std;
void line(int*a,int n)//选择排序,从大到小,如果要从小到大,把中间那个if的小于号改成大于号
{
int i,j;
for (i=1;i<=n-1;i++)//确保不重复
for (j=i+1;j<=n;j++)
if (a[i]<a[j])//前面的小于后面的
swap(a[i],a[j]);//交换
}
int main()
{
int n,a[15];
cin>>n;
int i;
for (i=1;i<=n;i++)cin>>a[i];
line(a,n);
for (i=1;i<=n;i++)cout<<a[i]<<" ";
cout<<endl;
system("pause");
/*详细推倒过程
随机写几个数
5 1 6 4 7
i=1,j=2
5 1 6 4 7
i=1,j=3
6 1 5 4 7 //后面的比前面的大
i=1,j=4
6 1 5 4 7
i=1,j=5
7 1 5 4 6
第一个已经为最大,从第二个开始
i=2,j=3
7 5 1 4 6
i=2,j=4
7 5 1 4 6
i=2,j=5
7 6 1 4 5
第二个已经为次大
后面的我不推了
效率O(n*(n-1)/2)
*/
return 0;
}
2019-07-17 22:49:56
-
这是直接选择排序
void SelectSort(DataType a[],int n)
{ int i,j,small;
DataType temp;
for( i = 0; i < n - 1;i ++)
{ small = i;
for (j = i+1; j < n; j++ )
if( a[j] < a[small] ) small = j;
if ( small != i)
{ temp = a[i];
a[i] = a[ small];
a[small] = temp;
}
}
}
还有堆排序也是选择排序,如果想要的话再来问,并加分,还可以给你测试主程序
2019-07-17 22:49:56