#include <stdio.h> void sort(int *a, int n); int main() { int a[] = {4, 2, 1, 5, 3, 56, 54, 4564, 4564}; int n = 9; sort(a, n); printf("排序后的结果为:\n"); for (int i = 0; i < n; i++) { printf("%d ", a[i]); } printf("\n"); return 0; } void sort(int *a, int n) { for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (a[i] < a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } }
时间: 2024-01-19 14:03:16 浏览: 183
这是一个使用选择排序算法对整型数组进行降序排列的 C 语言程序。程序的主函数定义了一个整型数组 a 和其元素个数 n,然后调用排序函数 sort 对数组 a 进行排序,最后输出排序后的结果。
排序函数 sort 的定义如下,它使用选择排序算法对数组 a 进行排序。选择排序算法的基本思想是:每次从待排序的元素中选择最大(或最小)的元素,放到已排序的元素序列的末尾,直到所有元素都排序完毕。
```
void sort(int *a, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (a[i] < a[j]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
```
其中,a 是指向数组首元素的指针,n 是数组元素个数。程序使用了两层循环来实现选择排序算法。外层循环从第一个元素开始,一直到倒数第二个元素,内层循环从外层循环的下一个元素开始,一直到最后一个元素,查找最大元素的位置。如果找到了最大元素的位置,就将其和当前外层循环指向的元素交换。这样,每一轮外层循环结束后,数组中最大的元素都会被移动到已排序的元素序列的末尾。最终,数组就被排序完成了。
相关问题
以下程序中函数代码的功能是将三个实在参数从小到大排序。请补充代码。\n#include<stdio.h>\nvoid sort(int *pa,int *pb,int *pc){ //排序
该程序中的函数是将三个参数从小到大排列。以下是补充代码:
#include <stdio.h>
void sort(int *pa, int *pb, int *pc) {
int tmp;
if (*pa > *pb) {
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
if (*pb > *pc) {
tmp = *pb;
*pb = *pc;
*pc = tmp;
}
if (*pa > *pb) {
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
}
int main() {
int a, b, c;
printf("请输入三个整数:");
scanf("%d %d %d", &a, &b, &c);
sort(&a, &b, &c);
printf("排序后的结果为:%d %d %d\n", a, b, c);
return 0;
}
注:该程序中使用指针参数,可以直接修改原来参数的值,没有返回值。
1.通过完成函数完成以下程序代码,输入n,再输入n个整数到数组,对数组升序排序,依次输出数组内容,输入输出示意如下: 10 3 7 1 2 12 23 2232 2 21 -1 -1 1 2 2 3 7 12 21 23 2232 【注意】:以下程序代码只允许添加不允许修改。 #include <stdio.h> #include <malloc.h> int *Read(int* n){ } void Write(int a[], int n){ } void Sort(int a[], int n){ } int main(){ int n,*a = NULL; a = Read(&n); Sort(a, n); Write(a, n); free(a); return 0; }
#include <stdio.h>
#include <malloc.h>
int *Read(int* n){
scanf("%d", n);
int *a = (int*)malloc(*n*sizeof(int));
for(int i = 0; i < *n; i++){
scanf("%d", &a[i]);
}
return a;
}
void Write(int a[], int n){
for(int i = 0; i < n; i++){
printf("%d ", a[i]);
}
}
void Sort(int a[], int n){
for(int i = 0; i < n-1; i++){
for(int j = i+1; j < n; j++){
if(a[i] > a[j]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int main(){
int n,*a = NULL;
a = Read(&n);
Sort(a, n);
Write(a, n);
free(a);
return 0;
}
阅读全文