c语言怎样通过函数调用实现选择排序法
答案:3 悬赏:40 手机版
解决时间 2021-11-25 10:08
- 提问者网友:ミ烙印ゝ
- 2021-11-24 17:49
c语言怎样通过函数调用实现选择排序法
最佳答案
- 五星知识达人网友:英雄的欲望
- 2021-11-24 18:50
c语言通过函数调用实现选择排序法:
1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength);
2、写两个循环,在循环中应用简单选择插入排序:
int SelectSort(int * ListData,int ListLength)
{
int i , j ;
int length = ListLength;
for(i=0;i<=length-2;i++)
{
int k = i;
for(j=i+1;j<=length-1;j++)
{
if(ListData[k]>ListData[j])
{
k=j;
}
}
if(k!=i)
{
int tmp = ListData[i];
ListData[i] = ListData[k];
ListData[k] = tmp;
}
}
return 0;
}
3、对编好的程序进行测试,得出测试结果:
int main()
{
int TestData[5] = {34,15,6,89,67};
int i = 0;
printf("|%d|",TestData[i]);
int retData = SelectSort(TestData,5);
printf("|%d|",TestData[i]);
return 0;
}
4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。
1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength);
2、写两个循环,在循环中应用简单选择插入排序:
int SelectSort(int * ListData,int ListLength)
{
int i , j ;
int length = ListLength;
for(i=0;i<=length-2;i++)
{
int k = i;
for(j=i+1;j<=length-1;j++)
{
if(ListData[k]>ListData[j])
{
k=j;
}
}
if(k!=i)
{
int tmp = ListData[i];
ListData[i] = ListData[k];
ListData[k] = tmp;
}
}
return 0;
}
3、对编好的程序进行测试,得出测试结果:
int main()
{
int TestData[5] = {34,15,6,89,67};
int i = 0;
printf("排序之前的结果
");
printf("|%d|",TestData[i]);
int retData = SelectSort(TestData,5);
printf("排序之后的结果:
");
printf("|%d|",TestData[i]);
return 0;
}
4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。
全部回答
- 1楼网友:十年萤火照君眠
- 2021-11-24 20:37
#include
main()
{
int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
if(a[j] {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
main()
{
int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
if(a[j] {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
- 2楼网友:忘川信使
- 2021-11-24 19:29
楼上那个是冒泡:
#include
void selection_sort(int a[], int n)
{
int i, j, k;
for(i = 0; i < n; ++i)
{
k = i;
for(j = i + 1; j < n; ++j)
if(a[k] >= a[j])
k = j;
j = a[i];
a[i] = a[k];
a[k] = j;
}
}
int main()
{
int a[] = {3,6,1,2,9,5,4,7,0,8}, i;
selection_sort(a, 10);
for(i = 0; i < 10; ++i)
printf("%d ", a[i]);
return 0;
}
#include
void selection_sort(int a[], int n)
{
int i, j, k;
for(i = 0; i < n; ++i)
{
k = i;
for(j = i + 1; j < n; ++j)
if(a[k] >= a[j])
k = j;
j = a[i];
a[i] = a[k];
a[k] = j;
}
}
int main()
{
int a[] = {3,6,1,2,9,5,4,7,0,8}, i;
selection_sort(a, 10);
for(i = 0; i < 10; ++i)
printf("%d ", a[i]);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯