当前位置:首页 » 编程语言 » 选择排序c语言函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

选择排序c语言函数

发布时间: 2022-02-14 13:51:34

1. c语言怎样通过函数调用实现选择排序法

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;

}

4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。

2. c语言——选择排序

递归版
#include<stdlib.h>
#include<stdio.h>
#define arrSize 1000
void RecurSelectSort(int a[], int n, int i);

main()
{
int a[arrSize], i, n;

printf("Please input the number of integers:"); /* 打印提示信息 */
scanf("%d", &n); /* 读取字符串长度 */
printf("Please input the integers:"); /* 打印提示信息 */
/* 读取数组元素 */
for(i=0;i<n;i=i+1){
scanf("%d", &a[i]);
}
/* 进行升序函数调用 */
for(i=0;i<n;i=i+1){
RecurSelectSort(a, n, i);
}
/* 打印数组元素 */
for(i=0;i<n;i=i+1){
printf("%d ", a[i]);
}
printf("\n"); /* 换行 */

system("pause");
}

void RecurSelectSort(int a[], int n, int i)
{
int b, max;

if(n==1){
if(a[n-1]>a[n]){
max=a[n-1];
a[n-1]=a[n];
a[n]=max;
}
}
else{
if(a[n-2]>a[n-1] && n>2){
b=a[n-1];
a[n-1]=a[n-2];
a[n-2]=b;
}
RecurSelectSort(a, n-1, i);
i=0;
}
}

3. C语言,用函数实现选择排序,对C纯菜鸟

程序比较凌乱,不过分成函数写的思想倒还可以,注意自己定义的变量,大小写对应的是不同的变量(compare里面),而且你的看起来更像是直接排序;主函数里面应该先初始化数组在排序,顺序很关键

4. C语言选择排序法

人家的效率高,交换次数少。比如3、2、1三个数。
你是第一轮3和2换变成2、3、1,再2和1换,变成1、3、2,第二轮3和2换变成1、2、3
他的是第一轮从后面选一个比3小的最小的数,K保存这个数的下标,先k是1,再k是2,一轮循环玩了才3和1交换,变成1、2、3,第二轮不交换。
你的算法没轮交换次数不定,看数据,他的每轮最多交换一次,特别是数据多时用他的效率高很多,因为给K赋值比交换快很多

5. 编写函数,使用选择排序法对数组进行排序(用C语言)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intmain(void)
{
inta[10],i,j,tmp,b;
srand(time(NULL));
for(i=0;i<10;i++)
a[i]=rand()%100;
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf(" ");
for(i=0;i<9;i++)
{
tmp=i;
for(j=i+1;j<10;j++)
{
if(a[tmp]>a[j])
tmp=j;
}
if(i!=tmp)
{
b=a[tmp];
a[tmp]=a[i];
a[i]=b;
}
}
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf(" ");
return0;
}


随机产生数组中的元素, 更合理一些。 网络中有各种版本。

6. C语言,编写一个函数,函数是用选择排序法将数组排序

#include<stdio.h>
void px(int a[])
{
int i,temp,j;
for(i=0;i<10;i++)
{
for(j=i;j<10;j++)
{
if(a[i]<=a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
void main()
{
int i,a[10];
for(i=0;i<10;i++)
{
printf("成绩:");
scanf("%d",&a[i]);
}
px(a);
for(i=0;i<10;i++)
{
printf("%d",a[i]);
printf("\n");
}
}
你的错误有点多,px(10)该改成px(a),还有for语句少打了括号,还有for语句里面的i和p的初值都应该为0,而你的是1,编程序的时候要注意代码的格式 排版 不然很难找错的 就像你的for语句少打了括号一样 自己写完了都不容易看出来
还有你那px函数里面的变量声明了太多,没必要 代码看起来要简单 可读性才强
我帮你把没必要的删了 看起来更舒服

7. c语言用指针写选择法排序函数

你的程序没错,只不过这不是选择法,是冒泡发,选择发如下:
void
sort(int
*a,int
n)
{
int
i,j,t,temp;
for(i=0;i<n-1;i++)
{
t=i;/初始定义t为未排序数的第一个
for(j=i+1;j<n;j++)
{
if(*(a+t)<*(a+j))/挑选出更大的数的位置,把他赋给t
t=j;
}
temp=*(a+i);
/t是最大的那个数的位置,把他和未排序的第一个交换位置
*(a+i)=*(a+t);
*(a+t)=temp;
}
}
main()
{
int
i,a[10],*p=a;
printf("input
zhe
array
a:\n");
for(i=0;i<10;i++)
scanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhe
sort
array
is:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
getch();
}

8. c语言,使用函数的选择法排序

voidselectionsort(inta[],intm)
{
inti,j;
intk;
inttmp;

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;
}
}
}

9. c语言选择排序法

外面的for循环,依次从队列中取出一个数用来比较
里面的for循环,用来比较上面选择的数据与后面的每个数据。

10. C语言选择法排序

#include<stdio.h>

#defineM 5

void main()

{

int b[M],i,j,t,k;

for(i=0;i<M;i++)

scanf("%d",&b[i]);

for(i=0;i<M-1;i++)

{

for(k=i,j=i+1;j<M;j++)

if(b[k]<b[j])

k=j;

if(i!=k)

{

t=b[i];

b[i]=b[k];

b[k]=t;

}

}

for(i=0;i<M;i++)

printf("%d ",b[i]);

}

错在大括号位置加错了。

代码:

#include<stdio.h>

void SelectionSort(int *num,int n)

{

int i = 0;

int min = 0;

int j = 0;

int tmp = 0;

for(i = 0;i < n-1;i++)

{

min = i;//每次讲min置成无序组起始位置元素下标

for(j = i;j < n;j++)//遍历无序组,找到最小元素。

{

if(num[min]>num[j])

{

min = j;

}

}

if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置

{

tmp = num[min];

num[min] = num[i];

num[i] = tmp;

}

}

}

(此处空一行)

int main()

{

int num[6] = {5,4,3,2,9,1};

int i = 0;

SelectionSort(num,6);//这里需要将数列元素个数传入。有心者可用sizeof在函数内求得元素个数。

for(i = 0;i < 6;i++)

{

printf("%d ",num[i]);

}

return 0;

}