2016-04-22 91 views
0

我需要的是指出由指針數組 與此函數數組進行排序(我只需要在指針上,在沒有這些[])如何對指針數組指向的數組進行排序?

void getSort(int** p2a, int arrSizes[]) //p2a is a array of pointers to diffrent arrays 

我試圖冒泡排序:

if (i < 5) 
{ 
    for (j = 1; j < arrSizes[i]; j++) // I started with 1 bcz i dont want to sort the first value 
    { 
     for (k = j + 1; k < arrSizes[i]; k++) 
     { 
      if (*(*(p2a + i) + j) > *(*(p2a + i) + k)) 
      { 
       temp = *(*(p2a + i) + j); 
       *(*(p2a + i) + j) = *(*(p2a + i) + k); 
       *(*(p2a + i) + k) = temp; 
      } 
     } 
     i++; 
    } 
} 

,但它不整理好... exampels:

  • 前:3 9 3 7
  • 後:3 3 9 7
  • 之前:3 6 1 7
  • 後:3 1 6 7
  • 之前:4 9 7 1 7
  • 後:4 9 7 1 7
+0

你還可以顯示你在p2a變量中存儲你的列表的部分。 – leninhasda

+0

'srand(time(NULL)); \t int i = 0,j = 0; \t int arrSizes [NUM] = {4,3,1,2,5}; \t int ** p2a =(int *)malloc(NUM * sizeof(int *)); \t爲(I = 0; I

回答

0

更改如果用於解決問題

for (i = 0; i < NUM; i++) 
{ 
    for (j = 1; j < arrSizes[i]; j++) 
    { 
     for (k = j + 1; k < arrSizes[i]; k++) 
     { 
      if (*(*(p2a + i) + j) > *(*(p2a + i) + k)) 
      { 
       temp = *(*(p2a + i) + j); 
       *(*(p2a + i) + j) = *(*(p2a + i) + k); 
       *(*(p2a + i) + k) = temp; 
      } 
     } 
    } 
} 
相關問題