
import javautilArrays;
public class SortDemo
{
public static void main(String[] args)
{
int[] ary =
{ 1, 5, 23, 4, 8, 26, 9, 0, 40, 79 };
Systemoutprintln("原始数组为:" + ArraystoString(ary));
selectionSort(ary);
Systemoutprintln("选择排序为:" + ArraystoString(ary));
}
/ 选择排序 /
private static void selectionSort(int[] ary)
{
for (int i = 0; i < arylength; i++)
{
for (int j = i + 1; j < arylength; j++)
{
if (ary[i] > ary[j])
{
int temp = ary[i];
ary[i] = ary[j];
ary[j] = temp;
}
}
}
}
}
我做了一些修改,下面的程序可以运行!你肯定是个初学者,所以不要急慢慢来,把基础的东西一定要搞懂
我所做的修改主要有3点:
2、自定义函数如要放在主函数之后,则在主函数中一定要说明int
opp(int
x);
否则一定要放在主函数之前定义
3、printf()是格式化的输出函数,一定要给出输出格式,你的程序中是int型的所以用“%d”
最后建议你找一本c语言的书好好看看!
#include
int
opp(x)
{
int
r;
r=x+1;
return
(r);
}
main()
{
int
a=1,b;
b=opp(a);
printf("%d",b);
}
程序写得实在有点乱,变量名的声明与传递存在些问题,我帮你改改:
#include <stdioh>
#define N 5
int a[N];
void init(void);
void compare(void);
void disp(void);
void main()
{
// printf("")
init();
compare();
void disp();
}
void init(void)
{
a[N]={2,1,4,9,5};
}
void compare(void)
{
int i,j,t;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j]
a[j]=t;
}
}
void disp(void)
{
int i;
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
}
程序改了很多,为什么?
数组a 定义为局部变量,你传递了却没返回,这样使用不了,我改为了全局变量,这样不需要传递,直接使用就行。
函数传递的另一个变量N 不需要传递,因为本身N就是个全局变量,直接使用就行。
还有一些定义了却没使用的变量我直接删了。
你先编译运行一下,有错再回复。
希望我的回答能帮助到你。
#include<stdioh>
int main(void)
{
void sort(int a[],int n);
int a[10];
int i,n;
printf("Enter n\n");
scanf("%d",&n);
printf("Enter %d numbers\n",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
void sort(int a[],int n){
int i,k,c,j;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++)
if(a[k]<a[j])
k=j;
{
c=a[k];//这里是a[k]和a[i]交换
a[k]=a[i];
a[i]=c;}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)