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

c语言自定义数组排序

发布时间: 2022-02-01 09:34:59

‘壹’ c语言数组排序

#include<stdio.h>
#include<iostream.h>
void main ()
{

printf("请输入10个整数\n");
int i,j;
float s[10],temp;
for(i=0;i<10;i++)
scanf("%f",&s[i]);

cout<<"原来数组为"<<endl;
for(i=0;i<10;i++)
printf("%.2f ",s[i]);

printf("\n");

for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(s[j]>s[i])
{
temp=s[j];

s[j]=s[i];

s[i]=temp;

}
cout<<"改变后的数组为"<<endl;
for(i=0;i<10;i++)
printf("%.2f ",s[i]);

printf("\n");

}

‘贰’ 用C语言编写自定义数组,求和,求平均值,求最大值,再排序,求大佬

#include<stdio.h>

#define N 10

void main() { int a[N],i,j,k,s,m; float v;

for ( i=0;i<N;i++ ) scanf("%d",&a[i]);

s=0; for ( i=0;i<N;i++ ) s+=a[i]; printf("数组元素之和=%d ",s);

v=s; v/=N; printf("数组元素平均值=%f ",v);

m=a[0]; for ( i=1;i<N;i++ ) if ( a[i]>m ) m=a[i]; printf("最大值=%d ",m);

for ( i=0;i<N-1;i++ ) for ( j=i+1;j<N;j++ ) if ( a[i]<a[j] ) {k=a[i];a[i]=a[j];a[j]=k;}

for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf(" ");

}

‘叁’ C语言自定义函数 数组冒泡排序 返回排序后的数组,怎么返回一个数组。

通常操作数组的时候,你发送的实参就是数组的首地址;所以直接void类型就可以;但是如果一定要设返回值的话;直接把形参接收的首地址返回就可以了!
你的代码中,有很大的问题;如果是的代码中这样设定要想不出问题,那么那个数组要在堆中分配;即malloc一块地址;
其次,int paixu() 改成int *paixu();
再次;return arr;就可以
如果你的程序需要作为接口给别人的,那么你这个写法显然是不对的;因为别人不知道怎么解析你这个接口返回的地址;知道是数组也不知道数组的元素个数!
再说你这个冒泡排序;也出问题了!j不会递增,也就是当执行到里面的循环后就是个死循环!

‘肆’ C语言(数组排序)

#include<stdio.h>
void main()
{
int a[10]={45,6,3,86,43,45,12,56,34,76},k,n,i,index,b;
n=10;//数组定义了有10个,这样写好对照你的图来看
for(k=0;k<=n-2;k++)
/*选折排序只用排到倒数第二位就行了,所以-1,然后你这写的是to,
也就是<=,数组大小变下标-1,相加所以就是-2,
当然如果写的是k<的话就是k<n-1了*/
{
index=k;
for(i=k+1;i<=n-1;i++)
{
if(a[i]<a[index])
index=i;
}
b=a[index];
a[index]=a[k];
a[k]=b;
}
for(k=0;k<=n-1;k++)
printf("%d\n",a[k]);
}

‘伍’ C语言数组排序方法

选择排序的原理是,每次从待排序数字中挑选出最大(最小)数字,放在有序序列的末尾。实际操作中,只需要在这个数组中将挑出来的数字与前面的数字交换即可。例如:4
1 5
2 3找到最小的1,1和4交换1
4 5
2
3找到最小的2,2和4交换1
2
5
4
3找到最小的3,3和5交换1
2
3
4
5找到最小的4,4和4交换(不交换也可)可见,选择排序需要一个双重循环来完成,因此它的复杂度是O(n^2)在数据量比较大时,不建议使用这种排序方法。 其他排序方法有很多,你甚至可以自己根据不同数据规模设计不同的排序方法。比较常见的有冒泡排序,插入排序(这两种和选择排序一样,都是O(n^2)),二分法插入排序(降低了一些复杂度,但是涉及到大规模数据移动,效率依然不高),快速排序(平均复杂度O(nlogn),但是不稳定,最坏情况O(n^2)),随机化快速排序(很大程度上避免了最坏情况的出现),堆排序(O(nlogn),编程复杂度高),基数排序(理论复杂度O(n),实际要比这个慢。甚至能应付字符串排序,但是编程复杂度高,牵扯到其他数据结构),桶排序(O(n),编程简单,效率高,但是应付的数据范围不能太大,受到内存大小的限制)。 平时比较常用的就是快速排序,程序简单,效率也可以接受。 这是我了解的一些东西,希望对你有帮助。

‘陆’ 用c语言数组定义5个数使用冒泡排序 从小到大

#include<stdio.h>
intBubbleSort(inta[],intlen)
{
inti,j,temp,CompareNum=0;
for(i=0;i<len-1;i++)//最多需len-1趟排序
for(j=0;j<len-i-1;j++)//每趟排序最多需要len-i-1次比较
{
if(a[j]>a[j+1])//将较大的值放到后面
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
CompareNum++;//比较次数加1
}
returnCompareNum;
}
voidmain()
{
inti;
inta[]={12,5,23,6,2};
BubbleSort(a,5);//5表示数组长度
for(i=0;i<5;i++)
{
printf("%d",a[i]);
}
printf(" ");
}

‘柒’ c语言中的数组排序

#include<stdio.h>
#include<windows.h>
int numSort(int *a,int count_num)
{ int i,j,min=-1,temp;
for(j=count_num-1;j>0;j--)
for(i=j-1;i>=0;i--)
if(a[j] > a[i])
{ temp=a[i]; a[i]=a[j]; a[j]=temp;
min=i;
j=0;
break;
}
if(min==-1) return 0;
for(i=min+1;i<count_num-1;i++)
for(j=i+1;j<count_num;j++)
if(a[j] < a[i])
{ temp=a[i];
a[i]=a[j];
a[j]=temp;
}
return 1;
}

void main()
{ int *a;
int i,j,count_num;
printf("个数:");
scanf("%d",&count_num);
a=(int *)malloc(sizeof(int)*count_num);

for(j=0;j<count_num;j++)
{ printf("输入第%d个数:",j+1);
scanf("%d",a+j);
}
if(numSort(a,count_num))
{ printf("\n排列后:");
for(i=0;i<count_num;i++)
printf("%d ",a[i]);
}
else printf("\n不满足条件");
}

‘捌’ C语言 数组排序

你定义的数组a[11]是11个数,但是你只初始化了0~9,a[10]由于你没有初始化所以是0
你的排序也把这个0排进去了。
你试试定义那里写a[11]=={1,10,20,30,40,50,60,70,80,90,100};就肯定不会有0了

‘玖’ 编写C语言程序,把一个数组按从小到大的次序排列起来

源程序以及算法注释如下:

#define _CRT_SECURE_NO_WARNINGS//VS编译环境需要进行宏定义,VC6.0可忽略

#include<stdio.h>//输入输出头文件

int main()

{

int number[10], New_number[10];//定义数组的数据类型为整型

int i, j, m, n, k;//定义变量的数据类型为整型

printf("input 10 <int> number:");//文字提示

for (i = 0; i <= 9; i++)//用循环输入数值给数组number并赋给数组New_number

{

scanf("%d", &number[i]);//输入10个整形数字到数组中

New_number[i] = number[i];//数组number元素赋给数组New_number

}

for (n = 0; n <= 8; n++)//要进行(10-1)组比较

for (j = 0; j <= 8 - n; j++)//每组进行(10减第几组)次比较

{

if (number[j] > number[j + 1])//比较大小并将小的赋给前面的数组

{

k = number[j];//将相对较大的元素赋值给中间元素

number[j] = number[j + 1];//将相对较小的元素送达前面一个位置

number[j + 1] = k;//将中间变量元素送给后面一个位置

}

if (New_number[j] < New_number[j + 1])//比较大小并将大的赋给前面的数组

{

k = New_number[j + 1];//将相对较小的元素赋值给中间元素

New_number[j + 1] = New_number[j];//将相对较大的元素送达前面一个位置

New_number[j] = k;//将中间变量元素送给后面一个位置

}

}

printf("min-->max: ");//文字提示

for (m = 0; m <= 9; m++)//依次从小到大输出

printf("%d ", number[m]);//输出元素

printf(" ");

printf("max-->min: ");//文字提示

for (m = 0; m <= 9; m++)//依次从大到小输出

printf("%d ", New_number[m]);//输出元素

printf(" ");

return 0;

}

程序运行结果如下:



(9)c语言自定义数组排序扩展阅读:

其他简单实现程序:

#include<stdio.h>

int main()

{

int a[10]={0};

int i,j,temp;

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

{

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

}

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

{

for(j = 0;j<10-i-1;j++)

{

if(a[j]>a[j+1])

{

temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

}

}

}

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

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

return 0;

}

‘拾’ c语言 定义一个函数,将一个一维数组中数据从小到大排序

#include<stdio.h>
#define N 10
void sortarray(int *a,int n) { int i,j,k;
for ( i=0;i<n-1;i++ ) for ( j=i+1;j<n;j++ ) if ( a[i]>a[j] ) {k=a[i];a[i]=a[j];a[j]=k;}
}
void main() { int a[N],i;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
sortarray(a,N);
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
}