
c语言,编程题,要用指针方法
编写sort(int*x,n)函数,对数组x的n个元素的绝对值从小到大进行排列。编写主函数,输入数组a的10个元素,调用sort,将x数组的各元素输出...
编写sort(int *x,n)函数,对数组x的n个元素的绝对值从小到大进行排列。编写主函数,输入数组a的10个元素,调用sort,将x数组的各元素输出
展开
展开全部
/*
数入10个元素:36 25 14 78 95 65 45 82 19 66
排序后:
14 19 25 36 45 65 66 78 82 95
Press any key to continue
*/
#include <stdio.h>
#define MAXlen 10
void select_sort(int *x, int n) { //选择排序
int i, j, min;
int t;
for (i = 0; i < n - 1; i++) { // 要选择的次数:0~n-2共n-1次
min = i; // 假设当前下标为i的数最小,比较后再调整
for (j = i + 1; j < n; j++) { //循环找出最小的数的下标是哪个
if (*(x + j) < *(x + min)) {
min = j; // 如果后面的数比前面的小,则记下它的下标
}
}
if (min != i) { // 如果min在循环中改变了,就需要交换数据
t = *(x + i);
*(x + i) = *(x + min);
*(x + min) = t;
}
}
}
int main() {
int i;
int iArr[MAXlen];
printf("数入%d个元素:",MAXlen);
for(i = 0 ; i < MAXlen ; i++)
scanf("%d",&iArr[i]);
select_sort(iArr,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i < MAXlen ; i++) {
if(i && i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n\n");
return 0;
}
展开全部
基于冒泡排序实现
void sort(int *x,int n){ int i,j,temp; for(i=1;i<n;i++) { for(j=0;j<n-i-1;j++) { if(abs(x[j])>abs(x[j+1])) { temp=x[j]; x[j]=x[j+1]; x[j+1]=temp; } } }}
int main(){ int a[6]={-3,4,2,-5,1,-6}; printf("排序前:\n"); for(int i=0;i<6;i++) { printf("%d\t",a[i]); } printf("\n"); sort(a,6); printf("绝对值排序后:\n"); for(int i=0;i<6;i++) { printf("%d\t",a[i]); } printf("\n"); return 0;}
void sort(int *x,int n){ int i,j,temp; for(i=1;i<n;i++) { for(j=0;j<n-i-1;j++) { if(abs(x[j])>abs(x[j+1])) { temp=x[j]; x[j]=x[j+1]; x[j+1]=temp; } } }}
int main(){ int a[6]={-3,4,2,-5,1,-6}; printf("排序前:\n"); for(int i=0;i<6;i++) { printf("%d\t",a[i]); } printf("\n"); sort(a,6); printf("绝对值排序后:\n"); for(int i=0;i<6;i++) { printf("%d\t",a[i]); } printf("\n"); return 0;}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询