c语言 编写实现选择法对n个整数按升序排列的函数

大一C语言题目,求帮助,谢谢(*°∀°)=3

#include<stdio.h>
int main()
{ void sort(int array[],int n);
  int a[100],n,i;
  scanf("%d",&n);
  for(i=0; i<n; i++)
    scanf("%d",&a[i]);
  sort(a,n);
  printf("the sorted array:\n");
  for(i=0; i<n; i++)
    printf("%5d",a[i]);
  printf("\n");
  return 0;
}
void sort(int a[],int n)
{ int i,j,k,t;
  for(i=0; i<n-1; i++)
  { k=i;
    for(j=i+1; j<n; j++)
      if(a[j]<a[k])
        k=j;
    t=a[k];
    a[k]=a[i];
    a[i]=t;
  }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-28
#include <stdio.h>
#include <stdlib.h>

#define NUM 10
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
int arr[NUM],i,j,temp;
printf("请输入10个数:\n");
for(i=0; i<NUM; i++) {
printf("请输入第(%d)个数:",i+1);
scanf("%d",&arr[i]);
}
printf("输入如下排列:\n");
for(i=0; i<NUM; i++) {
printf("%4d",arr[i]);
}
for(i=0; i<NUM; i++) {
for(j=i+1; j<NUM; j++) {
if(arr[i]>arr[j]) {
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
printf("\n从小到大如下排列:\n");
for(i=0; i<NUM; i++) {
printf("%4d",arr[i]);
}
return 0;
}

冒泡法排序望采纳谢谢

追问

#include

int main()

{int a[10]={23,4,12,34,55,76,89,90,76,72};

int i,j,k,t,n=10;

for(i=0;i<n-1;i++)

{k=i;

for(j=i+1;j<n;j++)

if(a[j]<a[k])k=j;

t=a[k];a[k]=a[i];a[i]=t;

}

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

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

return 0;

}

这是实现选择法对10个整数按升序排列的函数
怎样改成“用实现选择法对n个整数的按升序排列的函数”呀,大神

追答#include<stdio.h>
#define NUM 10
void SelectSort(int *a, int n) {//选择法排序
int i,j;
for ( i= 0; i < n; i++) {
int key = i;    //    临时变量用于存放数组最小值的位置
for ( j = i + 1; j < n; j++) {
if (a[j] < a[key]) {
key = j;    //    记录数组最小值位置
}
}
if (key != i) {
int tmp = a[key];
a[key] = a[i];
a[i] = tmp;    //    交换最小值
}

}
}
int main() {
int arr[NUM],i,j,temp;
printf("请输入10个数:\n");
for(i=0; i<NUM; i++) {
printf("请输入第(%d)个数:",i+1);
scanf("%d",&arr[i]);
}
printf("输入如下排列:\n");
for(i=0; i<NUM; i++) {
printf("%4d",arr[i]);
}
SelectSort(arr, NUM);
printf("排序好的数组为: ");
for(i=0; i<NUM; i++) {
printf("%4d",arr[i]);
}
return 0;
}

相似回答