1264 - C语言10.34

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

用指向指针的指针的方法对n个整数从小到大排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,经过函数排序后在主函数中输出。

题目输入

第一行有一个整数n,保证n不超过100。

第二行有n个整数,用空格隔开。

题目输出

在一行内输出从小到大有序的n个整数,每个整数后输出一个空格。

请注意行尾输出换行。

输入/输出样例

输入格式

10
1 3 5 7 9 2 4 0 8 6

输出格式

0 1 2 3 4 5 6 7 8 9 

C语言解答

#include<stdio.h>
int main()
{
  int i,j,n,k,t;
  int a[100];
  scanf("%d",&n);
  for(i=0;i<n;i++)
    scanf("%d",a+i);
for(i=0;i<n-1;i++)
{
	k=i;
	for(j=i+1;j<n;j++)
     if(a[k]>a[j]) k=j;
	 if(k!=i) {t=a[i];a[i]=a[k];a[k]=t;}

}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
	return 0;
}

C++解答

#include <stdio.h>
int main() {
	void sort(int *vals[], int n);
	int *vals[100], val[100], i, n;
	scanf("%d", &n);
	for (i = 0;i < n;i++) {
		scanf("%d", &val[i]);
		vals[i] = &val[i];
	}
	sort(vals, n);
	for (i = 0;i < n;i++)
		printf("%d ", *vals[i]);
	printf("\n");
	return 0;
}
/* 选择排序函数 */
void sort(int *vals[], int n) {
	int i, j, **p, *temp;
	for (i = 0;i < n - 1;i++) {
		p = vals + i;
		for (j = i + 1;j < n;j++) {
			if (*vals[j] < **p)
				p = vals + j;
		}
		temp = *p; *p = vals[i]; vals[i] = temp;
	}
}

Java解答



import java.util.Arrays;
import java.util.Scanner;

public class Main{
  private static Scanner s = new Scanner(System.in) ;
  
  public static void main(String[] args) {
	 int num = s.nextInt() ;
	 if(num<=100){
	 int a[] = new int[num] ;
	 for (int i = 0; i < num; i++) {
		a[i] = s.nextInt() ;
	 }
	 
	 Arrays.sort(a);
	 
	 for (int i = 0; i < a.length; i++) {
		System.out.print(a[i]+" "); 
	  }
	 System.out.println();
	 }
  }
}