大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
把
成都创新互联是一家专注于成都网站设计、成都做网站与策划设计,大兴网站建设哪家好?成都创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:大兴等地区。大兴做网站价格咨询:028-86922220
if(p!=i)
{
q=a[p];
a[p]=a[i];
a[i]=q;
}
这一段放到前面的p=m;后地}后面。
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("排序之前的结果\n");
for(i = 0;i5;i++)
printf("|%d|",TestData[i]);
int retData = SelectSort(TestData,5);
printf("排序之后的结果:\n");
for(i = 0;i5;i++)
printf("|%d|",TestData[i]);
return 0;
}
4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。
SeqList L;//L只是个默认构造,在后面执行基本是统一的0值;执行前应该设置实体数据
L=Selection(L.length);//改为L=Selection(L);原函数调用与函数定义不符,有语法错误;L.length是个int 类型,函数定义的参数类型是SeqList;
SeqList Selection(SeqList L) 内部逻辑不够简捷,多多练习;
if (L.data[j]L.data [i]){}//可直接交换,k标志没什么作用。
void selectionsort(int a[],int m)
{
int i,j;
int k;
int tmp;
for(i = 0; i m-1; i++)//控制循环次数,n个数需要n-1次循环
{
k = i;
for(j = i+1; j m ; j++)
{
if(a[j] a[k])
k = j;
}
//i不等于k是就证明a[i]不是最小的,
//i等于k时证明a[i]就是本轮比较过程中最小的值
if(i != k)
{
tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
}