p257.16_指向指標的指標對n個整數進行排序
阿新 • • 發佈:2018-11-28
#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;
}