C语言编写一个排序函数(对一维数组排序)并在主函数中调用

#include<stdio.h>
void seq(int a[],int n)
{
int i,j,t;

for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[j+1]>a[i])
{t=a[i];a[i]=a[j+1];a[j+1]=t;}
}
}

}
void main ()
{
int a[10],i;
printf("Input array A:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
seq(a,10);
for(i=0;i<10;i++)
printf("%4d",a[i]);

}
运行后有错误,能帮我看看为什么吗

以下是一个使用C语言编写一维数组排序函数并在主函数中调用的示例代码,采用的是从小到大排序的方式,可以根据需要进行修改:

```c
#include <stdio.h>

// 排序函数,参数为待排序数组和数组长度
void sort(int arr[], int len) {
int i, j, tmp;
// 冒泡排序
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) { // 相邻元素比较,如果前面的大于后面的,则交换位置
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}

int main() {
int arr[] = { 3, 1, 5, 7, 2, 4, 6 };
int len = sizeof(arr) / sizeof(int);
int i;

// 输出排序前的数组
printf("排序前:
");
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("
");

// 调用排序函数进行排序
sort(arr, len);

// 输出排序后的数组
printf("排序后:
");
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("
");

return 0;
}
```

在上面的代码中,我们定义了一个`sort`函数,实现了一维数组排序,并接受待排序数组和数组长度为参数。排序的算法采用的是冒泡排序,每次比较相邻元素的大小并交换它们的位置,直到排序完成。

在主函数中,我们声明了一个待排序的一维数组`arr`,并计算了数组长度。然后,我们输出了排序前的数组,并调用`sort`函数进行排序。最后,我们输出排序后的数组。

需要注意的是,排序函数的实现方式可以有多种,根据实际需求和数据类型的不同,选择合适的排序算法可以提高排序的效率和准确性。在调用排序函数时,需要确保输入的参数正确和合法,避免出现数组越界等错误。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-05
for(j=i+1;j<n;j++)
{
if(a[j+1]>a[i])//a[j+1]改成a[j]
{
t=a[i];
a[i]=a[j+1];//a[j+1]改成a[j]
a[j+1]=t;//a[j+1]改成a[j]
}
}本回答被提问者采纳
第2个回答  2014-05-05
我这里输入 1 2 3 4 5 6 7 8 9 10 是没有错误的,不知道你的错误是什么,能发出来看看么追问

经过下面的高手帮助,我才发现是排序的地方错了 ,谢谢你啊

相似回答