ポインタを指すポインタの方法で文字列と整数をソート


【問題1】
ポインタを指すポインタの方法で5文字列をソートします.
【C言語】
#include
#include

void sort(char **p) {
	int i, j, k;
	char *temp;
	for (i = 0; i < 4; i++) {
		k = i;
		for (j = i + 1; j < 5; j++)
			if (strcmp(*(p+k), *(p+j)) > 0)
				k = j;
		if (k != i) {
			temp = *(p+k);
			*(p+k) = *(p+i);
			*(p+i) = temp;
		}
	}
}

int main() {
	char **p,*pstr[5],str[5][20];
	int i ;
	for(i=0;i<5;i++)
		pstr[i]=str[i];
	for(i=0;i<5;i++)
		scanf("%s",pstr[i]);
	p=pstr;
	sort(p);
	for(i=0;i<5;i++)
		printf("%s
",pstr[i]); return 0; }

【問題2】
ポインタを指すポインタの方法でn個の整数をソートします.
【C言語】
/*
 * 8-21.c
 *
 *  Created on: 2015 6 30 
 *      Author: lenovo
 */

#include

void sort(int **p, int n) {
	int i, j;
	int *temp;
	for (i = 0; i < n - 1; i++) {
		for (j = i + 1; j < n; j++)
			if (**(p + i) > **(p + j)) {
				temp = *(p + i);
				*(p + i) = *(p + j);
				*(p + j) = temp;
			}
	}

}

int main() {
	int n;
	scanf("%d", &n);
	int **p, *pstr[20], a[n];
	int i;
	for (i = 0; i < n; i++)
		pstr[i] = &a[i];
	for (i = 0; i < n; i++)
		scanf("%d", &a[i]);
	p = pstr;
	sort(p, n);
	for (i = 0; i < n; i++) {
		printf("%d\t", *pstr[i]);
	}
	return 0;
}