1. 程式人生 > >p257.16_指向指標的指標對n個整數進行排序

p257.16_指向指標的指標對n個整數進行排序

#include <stdio.h>
//#define DEBUG

#ifdef DEBUG
void sort(int **p, int n)
{
	int i, j, *temp;
	for (i = 0;i < n - 1;i++) // 這裡是n-1 而不是n 萬分注意 
	{
		for (j = 0;j < n - 1 - i;j++)
		{
			if (**(p + j) > **(p + j + 1))
			{
				temp = *(p + j);
				*(p + j) = *(p + j + 1);
				*(p + j + 1
) = temp; } } } } #endif #ifndef DEBUG void sort(int **p,int n) { int i, j, k; int *temp; for (i = 0;i < n-1;i++) { k = i; for (j = i + 1;j < n;j++) { if (**(p + k) > **(p + j)) { //point 是k不是i!!! k = j; } } if (k != i) { temp = *(p + i); *(p + i) = *(p + k); //point
*(p + k) = temp; } } } #endif int main(void) { int i, n; int a[20], **p, *pa[20]; printf("input n\n"); scanf("%d", &n); for (i = 0;i < n;i++) { pa[i] = &a[i]; } printf("input %d integer numbers:\n", n); for (i = 0;i < n;i++) { scanf("%d", pa[i]); } p = pa; sort(p,
n); printf("The sequence:\n"); for (i = 0;i < n;i++) { printf("%d ", *pa[i]); } return 0; }