C语言怎样对二维数组中每个元素进行选择排序 将以二维数组每列按降序排列,冒泡或选择排序法

\u5c06\u4e8c\u7ef4\u6570\u7ec4\u7684\u5404\u884c\u5143\u7d20\u7684\u503c\u5347\u5e8f\u6392\u5217,\u6392\u5e8f\u7b97\u6cd5\u4f7f\u7528\u9009\u62e9\u6392\u5e8f\u6216\u8005\u5192\u6ce1\u6392\u5e8f

#include #include #include #define LINE 10 //\u9884\u5b9a\u4e49\u4e8c\u7ef4\u6570\u7ec4\u884c\u6570#define COLUMN 10 //\u5217\u6570void bubble_sort(int a[], int n){ int i, j, temp; for (j = 0; j < n; j++) for (i = j+1; i< n ; i++) { if(a[i] < a[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } }} int main(){ int arr[LINE][COLUMN]={0}; int i,j,k; srand((unsigned)time(NULL));//\u521d\u59cb\u5316\u968f\u79cd\u5b50 for (i = 0; i != LINE; i++) { for(j=0;j!=COLUMN;++j){ //\u9010\u884c\u8f93\u5165\u6570\u636e arr[i][j]=rand()%1000+1;//\u5229\u7528\u968f\u673a\u6570\u751f\u62101000\u4ee5\u5185\u6574\u6570\uff0c\u65b9\u4fbf\u8c03\u8bd5 //scanf("%d",&arr[i][j]);//\u624b\u5de5\u8f93\u5165\u6d4b\u8bd5\u6570\u636e } bubble_sort(arr[i], COLUMN);//\u8f93\u5165\u5b8c\u4e00\u884c\uff0c\u5c31\u5bf9\u8be5\u884c\u8fdb\u884c\u6392\u5e8f } for (i = 0; i != LINE; i++)//\u8f93\u51fa\u6392\u5e8f\u540e\u7ed3\u679c { for(j=0;j!=COLUMN;++j){ printf("%4d ",arr[i][j]); } printf("\n"); } return 0;}

#include #include #include #define M (10)#define N (10)void sort(int a[][N],int m,int n){int i,j,k,t;for(j=0;j<n;++j){for(i=0;i<m;++i){for(k=0;k<n-i-1;++k){if(a[k][j]<a[k+1][j]){t=a[k][j];a[k][j]=a[k+1][j];a[k+1][j]=t;}}}}}int main(void){int a[M][N],i,j;srand(time(NULL));for(i=0;i<M;++i){for(j=0;j<N;++j){a[i][j]=rand()%10;}}sort(a,M,N);for(i=0;i<M;++i){for(j=0;j<N;++j){printf("%d ",a[i][j]);}printf("\n");}return 0;}

#include <stdio.h>
#include "stdlib.h"
#include "time.h"
int main(int argc,char *argv[]){
    int a[5][8],i,j,k,t,*p;
    printf("排序前:
");
    srand((unsigned)time(NULL));
    for(i=0;i<5;i++){//为二维数组赋值
        for(j=0;j<8;printf("%3d",a[i][j++]=rand()%100));
        printf("
");
    }
    printf("排序后:
");
    p=(int *)a;//降为一维,这样排序简单
    for(t=i=0;i<40;i++){//选择法排序
        for(k=i,j=k+1;j<40;j++)
            if(p[k]>p[j])
                k=j;
        if(k!=i)
            j=p[k],p[k]=p[i],p[i]=j;
        printf(++t%8 ? "%3d" : "%3d
",p[i]);
    }
    return 0;
}


1)核心思想是每行按顺序排列好,假定从小到大,然后,每列从小到大排序
2)假设数组为a[i_max][j_max]
核心代码
for(i=0;i<i_max;i++)

for(j=0;j<j_max;j++)
for(k=j+1;k<j_max-1;k++)
if(a[i][k]<a[i][j])
{ t=a[i][j];
a[i][j]=a[i][k];
a[i][k]=t;

}

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

for(i=0;i<i_max;i++)
for(k=i+1;k<i_max-1;k++)
if(a[k][j]<a[i][j])
{ t=a[i][j];
a[i][j]=a[k][j];
a[k][j]=t;

}
望采纳

  • 濡備綍鐢c璇█瀹炵幇浜岀淮鏁扮粍?
    绛旓細浣跨敤 C 璇█瀹炵幇浜岀淮鏁扮粍鍙互閫氳繃浠ヤ笅姝ラ锛1. 澹版槑涓涓簩缁存暟缁勫彉閲忥細棣栧厛锛岄渶瑕佸0鏄庝竴涓簩缁存暟缁勫彉閲忔潵瀛樺偍鏁版嵁銆傚0鏄庝簩缁存暟缁勯渶瑕佹寚瀹氭暟缁勭殑琛屾暟鍜屽垪鏁帮紝骞跺彲浠ョ粰鏁扮粍鍛藉悕銆2. 鍒濆鍖栦簩缁存暟缁勶細鍙互閫夋嫨鍦ㄥ0鏄庝簩缁存暟缁勬椂鍒濆鍖栵紝鎴栬呭湪鍚庣画鐨勪唬鐮佷腑鍒濆鍖栨暟缁勩傚彲浠ヤ娇鐢ㄥ惊鐜粨鏋勬潵閬嶅巻鏁扮粍鐨勬瘡涓厓绱狅紝骞...
  • c璇█涓庢牱瀹炵幇瀵逛簩缁存暟缁勫厓绱杩涜璧嬪煎苟杈撳嚭銆
    绛旓細1 瀹氫箟浜岀淮鎸囬拡銆2 纭畾鏁扮粍缁存暟锛屽嵆琛屾暟鍜屽垪鏁般3 鐢宠琛屾暟涓竴缁存寚閽堝ぇ灏忕┖闂达紝骞惰祴鍊肩粰浜岀淮鎸囬拡銆4 瀵逛簬姣忎釜涓缁存寚锛岀敵璇峰垪鏁颁釜鍏冪礌鐨勭┖闂达紝骞惰祴鍊肩粰瀵瑰簲鐨勪竴缁存寚閽堛5 杈撳叆鎴栬祴鍊兼暟鎹6 浣跨敤鍙岄噸寰幆锛岄愪釜鑼冨洿瀛樺偍鍗曞厓骞惰緭鍑恒7 閫愪釜閲婃斁涓缁存寚閽堜笂鐨勫唴瀛樸8 閲婃斁浜岀淮鎸囬拡涓婄殑鍐呭瓨銆備互鏁村瀷浜岀淮...
  • C璇█涓,瀵逛簩缁存暟缁鎵鏈鍏冪礌閬嶅巻涓娆,鏈夊嚑绉嶅惊鐜柟寮?涓轰粈涔?
    绛旓細鏈変笁绉嶅惊鐜柟寮忥細FOR寰幆銆丏O-WHILE寰幆 銆乄HILE寰幆锛屽瓧绗︿覆涔嬮棿鐨勬瘮杈冿紝瀹冩湁涓撻棬鐨勫瓧绗︿覆姣旇緝鍑芥暟锛歴trcmp鍑芥暟銆2銆涓嶈兘鐢ㄨ繍绠楀叧绯荤
  • c璇█涓庢牱瀹炵幇瀵逛簩缁存暟缁勫厓绱杩涜璧嬪煎苟杈撳嚭銆
    绛旓細锛1锛夛紝鍒嗚缁欎簩缁存暟缁璧嬪垵鍊笺俰nt a[3][4]={{1锛2锛3锛4}锛寋5锛6锛7锛8}锛寋9锛10锛11锛12}}锛2锛夛紝鍙互灏嗘墍鏈夋暟鎹斁鍦ㄨ姳鎷彿鍐咃紝鎸夐『搴忓鍏冪礌璧嬪硷紝int a[3][4]={1锛2锛3锛4锛5锛6锛7锛8锛9锛10锛11锛11锛12}
  • C璇█鎬庢牱瀵逛簩缁存暟缁勪腑姣忎釜鍏冪礌杩涜閫夋嫨鎺掑簭
    绛旓細){ int a[5][8],i,j,k,t,*p; printf("鎺掑簭鍓:\n"); srand((unsigned)time(NULL)); for(i=0;i<5;i++){//涓浜岀淮鏁扮粍璧嬪 for(j=0;j<8;printf("%3d",a[i][j++]=rand()%100)); printf("\n"); } printf("鎺掑簭鍚:...
  • c璇█涓庢牱瀹炵幇瀵逛簩缁存暟缁勫厓绱杩涜璧嬪煎苟杈撳嚭銆
    绛旓細鐢ㄤ竴涓袱閲嶅惊鐜氨鍙互浜嗭細#include <stdio.h>void main(){int a[3][4] = {0}, row, col;printf("璇疯緭鍏鏁扮粍鍏冪礌鐨鍊(3琛4鍒): \n");for (row=0; row<3; row++)for (col=0; col<4; col++)scanf("%d", &a[row][col]);printf("鎮ㄨ緭鍏鐨勬暟缁涓:\n");for (row=0; ...
  • c璇█涓簩缁存暟缁勫浣閮ㄥ垎璧嬪?姹傝В,璋㈣阿銆
    绛旓細缁欎簩缁存暟缁勪腑鐨勯儴鍒鍏冪礌璧嬪硷紝涓鑸槸閲囩敤鍗曚釜鍏冪礌閫愪釜杩涜璧嬪笺傚鏋滄槸涓烘瘡涓琛岀殑鍓嶈嫢骞蹭釜杩炵画鍏冪礌璧嬪煎彲浠ュ湪瀹氫箟鏁扮粍鍙橀噺鐨勬椂鍊欎竴璧峰垵濮嬪寲銆傝繖鏃跺欙紝鍒濆鍖栧繀椤昏涓烘暣涓暟缁勫叏閮ㄥ厓绱犺祴鍊兼垨鑰呬负鏁扮粍涓紝鍓嶈嫢骞茶鐨勫墠鑻ュ共涓厓绱犺祴鍊硷紝杩欐椂鍏朵綑鏈祴鍊肩殑鍏冪礌鑷姩琚祴鍊间负鍒濆鍊0銆俰nclude#include<stdio.h> int ...
  • 鍦C璇█涓,鍐欏嚭浜岀淮鏁扮粍鍏冪礌a[2][3]鍦ㄥ唴瀛樹腑鐨瀛樻斁椤哄簭
    绛旓細鍦 C 璇█涓锛浜岀淮鏁扮粍鏄敱涓绯诲垪杩炵画鐨勫唴瀛樹綅缃粍鎴愮殑锛屽叾涓姣忎釜鍏冪礌鍗犵敤涓涓壒瀹氱殑瀛楄妭鏁般傚浜庝竴涓簩缁存暟缁 a[2][3]锛屽叾瀛樻斁椤哄簭濡備笅鍥炬墍绀猴細```+---+---+---+ | a[0][0] | a[0][1] | a[0][2] | +---+---+---+ | a[1][0] | a[1][1] | a[1][2] | +...
  • 缁涓涓2*3鐨勪簩缁存暟缁勫悇鍏冪礌璧嬪,骞惰緭鍑哄叏閮ㄥ厓绱犵殑鍊鐨凜璇█绋嬪簭璁捐
    绛旓細include<stdio.h> main(){ int a[2][3];for(int i=0;i<2;i++)for(int j=0;j<3;j++)scanf("%d",&a[i][j]);for(int i=0;i<2;i++)for(int j=0;j<3;j++)printf("%d",a[i][j]);}
  • c璇█涓,瀵逛簩缁存暟缁勭殑鎵鏈鍏冪礌閬嶅巻涓娆,鏈夊嚑绉嶅惊鐜柟寮,涓轰粈涔?_鐧惧害...
    绛旓細涓嶆噦鎯抽棶浠涔堬紝寰幆鍢涳紝鏃犻潪灏辨槸while鍟奻or鍟婁箣娴 瑕佽鏂瑰紡瑕佷箞灏辨寜琛屾寜鍒楋紝鎴栬呮寜鍒楁寜琛岋紝鎴栬呯洿鎺ョ湅鎴愯繛缁殑绌洪棿锛屼篃灏辨槸涓缁鏁扮粍锛屾瘮濡俛[10][10],鐪嬩綔a[100],灏辫繖鏍凤紝鍡
  • 扩展阅读:二维数组的行与行交换 ... c#怎么给二维数组赋值 ... 二维数组中找最大值 ... 二维数组下标规则 ... c语言2 3数组行列互换 ... c#删除数组中的某个元素 ... 二维数组两行交换位置 ... c语言二维数组怎么看 ... c语言用gets输入二维数组 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网