c 二維陣列排序問題,C 二維陣列排序問題

2022-02-26 07:20:51 字數 3121 閱讀 1793

1樓:呼嘯長風

要做到p排好序的同時c同時排好序,c的對應的元素關鍵字大小應和p正相關,否則必須分別排序。

同時要排序後知道之前的位置,可以考慮用間接定址(需要一個等大小的指標陣列)。

而且,這樣做的話,並真正在地對陣列排序,而是對指標排序,通過排好序的指標懂得陣列的的大小順序,當然,排序前的位置也是知道的。

#include

#include

using namespace std;

#define n 10

template

void shellsort(t* a,int n)

{ //希爾排序

int i,j,k;

t* t;

k = n / 2;

while(k > 0)

for(i = k;i < n;i++)

t = a[i];

for(j = i - k;j >= 0 && *a[j] > *t;j -= k)

a[j+k] = a[j];

a[j+k] = t;

k /= 2;

int main()

int p[n],c[n];

int* pt[n];

int i;

for(i = 0;i < n;i++)

p[i] = rand();

c[i] = p[i] + 1;

pt[i] = &p[i];

cout<<"p排序前"

cout

cout<<"p排序後"

cout<<*pt[i]<<' ';

cout

cout<<(int)(pt[i] - pt[0])<<' ';

cout

cout

這僅是個思路。

因為不太清楚你需要的效果,所以僅舉個例子。

2樓:小羅卜頭

#include

#include

int main(void)

3樓:簡愛的獨白

樓主能把問題再敘述清楚一點麼?俺看不懂啊,p(i,n)和c(i,n)是啥關係啊?n和n撇的關係按照啥返回啊?

c++用sort寫的 二維字元陣列排序問題

4樓:兔子和小強

你是對指標陣列(即str2)進行排序,最後得到排序後的索引序列,原字串並沒有被改變。所以,最後不應列印str1,而要列印str2:

for(i=0;i

c/c++ 如何實現按二維陣列其中一列的元素大小為標準對整個陣列的行進行排序? 10

5樓:匿名使用者

就好比每個學生3門成績,對英語成績進行排序。這在資料庫管理中叫索引排序

#include

#define n 3

#define m 3

void main() ,, },i,j,k,index[n];

for ( i=0;i

6樓:聲控解鎖

#include

int main()

for(k=0;k<4;k++)

}for(i=0;i<5;i++)

for(j=0;j<5;j++)

printf("%f\n",a[i][j]);

return 0;}

c++二維陣列排序問題

7樓:匿名使用者

#include//寫的比較簡單,原理你應該都知道了,後面的,就是 開始做的那個沒刪

void main()

; for(i=0;i<12;i++) //冒泡

for(j=0;j<12;j++)

if(a[j/4][j%4]>a[(j+1)/4][(j+1)%4]) //看起來有點複雜,其實就是 12個數分成3行4列,對應的行數就是j/4,列數j%4,+1那個就是它下一個數

for(i=0;i<3;i++) //列印

for(j=0;j<4;j++)

printf("%d\n",a[i][j]);

}//沒刪,以後有用的著的地方你可以再看看

#include

void sort(int *a,int x,int y) /*2維陣列排序函式,為了讓函式更通用,不止限於「三行四列」的二維陣列,傳入3個引數,a為陣列名,x行數,y列數*/ }

void printdata(int *a,int x,int y) //2維陣列的通用列印程式

void main() //主要拿來測試上面兩個函式

; int b[4][4]=;

sort((int*)a,3,4);

sort((int*)b,4,4);

printdata((int *)a,3,4);

printf("\nnext:\n");

printdata((int *)b,4,4);}

8樓:匿名使用者

你好,我先說一下演算法吧,先把二維陣列賦值到一個一維陣列,然後利用for迴圈依次把第一個數和其他數依次比較,每次比較把較大數放在後面,一次迴圈下來陣列中最大的數就在最後面了,做了(n-1)*(n -1)此比較換位後,陣列就是升序陣列了,然後循序輸出陣列值就ok了。

#include

void main()

;int b[12];

n = 0;

for (i = 0; i < 3; i++)for (j = 0; j < 4; j++, n++)b[n] = a[i][j];

for (i = 0; i < 11; i++)}}for (n = 0; n < 12; n++)printf("%d,", b[n]);

printf("\n");}

9樓:_鈊_煩_薏亂

排序撒,排好序就可以了。

c二維陣列傳遞問題,C語言怎麼以二維陣列作為引數傳遞的問題

你這裡nn裡面確實是二維陣列,char al 10 是說al是一個一維維度為10的二維陣列指標變數。因此和你的ne陣列是對應的,傳參是沒問題的。錯誤在於 1.你的函式呼叫有問題 nn ne 2.你給陣列賦值,al 0 asd 這種使用,是僅在陣列初始化的時候被允許的。如果要實現這個字串放到陣列,可以...

C二維陣列的程式,一個 C 二維陣列的程式

陣列太大了,看看下面 一個由 c c 編譯的程式佔用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由 os 注意它與資料結構中的...

關於c語言二維陣列輸出問題,C語言程式設計二維陣列輸出一個23的矩陣

二維bai陣列是由一維陣列構成的,迴圈第du一維輸出zhi就可以了 include stdio.h int main int argc,char argv int i for i 0 i 7 puts s i return 0 執行結果 版空的那一行就是那個權空字串的輸出結果。c語言程式設計 二維陣...