61.对一个整数数组排序

61.对一个整数数组排序

输入一个整数 m,然后输入 m 个整数存入数组,用一个指针数组分别指向该数组的对应元素。

要求,在不改变原始数组顺序的情况下,通过指针数组对数据按升序排序。

说明:请仅提交你编写的函数 int resort(int *pa[], int num);

预设代码

前置代码

  1. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */  
  2.  
  3. #include <stdio.h>  
  4. #include <stdlib.h>  
  5.   
  6. int resort(int *pa[], int num);  
  7.     //通过指针数组pa对所指的num个数据进行间接排序(升序)   
  8.   
  9. int main(int argc, char *argv[])  
  10. {  
  11.     int a[100], num, i, *pa[100];  
  12.   
  13.     scanf("%d", &num);  
  14.     for ( i=0; i<num; i++) {  
  15.         scanf("%d", &a[i]);  
  16.         pa[i] = &a[i];  
  17.     }  
  18.   
  19.     resort(pa, num);    //这是你需要编写并提交的函数   
  20.   
  21.     for( i=0; i<num; i++ ) { //按指针pa的顺序输出排序结果   
  22.         printf("%d\n", *pa[i]);  
  23.     }  
  24.     return 0;  
  25. }  
  26.   
  27. /* PRESET CODE END - NEVER TOUCH CODE ABOVE */  
  测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1 以文本方式显示
  1. 5↵
  2. 23   12  -7   6   89↵
以文本方式显示
  1. -7↵
  2. 6↵
  3. 12↵
  4. 23↵
  5. 89↵
1秒 64M 0
测试用例 2 以文本方式显示
  1. 6↵
  2. 12 7 56 78 9 34↵
以文本方式显示
  1. 7↵
  2. 9↵
  3. 12↵
  4. 34↵
  5. 56↵
  6. 78↵
1秒 64M 0

【分析】:

没什么好分析的

【代码】:

查看代码

#include <stdio.h>
#include <stdlib.h>

int resort(int* pa[], int num);
//通过指针数组pa对所指的num个数据进行间接排序(升序) 

int main(int argc, char* argv[])
{
	int a[100], num, i, * pa[100];

	scanf("%d", &num);
	for (i = 0; i < num; i++) {
		scanf("%d", &a[i]);
		pa[i] = &a[i];
	}

	resort(pa, num);	//这是你需要编写并提交的函数 

	for (i = 0; i < num; i++) {	//按指针pa的顺序输出排序结果 
		printf("%d\n", *pa[i]);
	}
	return 0;
}

int resort(int* pa[], int num)
{
	for (int i = 0; i < num; i++) {
		for (int j = i; j < num; j++)
			if (*pa[i] > *pa[j]) {
				int t = *pa[i];
				*pa[i] = *pa[j];
				*pa[j] = t;
			}
	}
	return 1;
}

 

posted @ 2022-12-28 17:41  我千五可以  阅读(128)  评论(0)    收藏  举报