您的位置:首页 > 其它

二维数组列排序

2016-07-05 22:07 267 查看
#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <math.h>

#include "oj.h"

// 功能:排列一个m行n列 大小的数组

// 输入: int * pArray 指向数组第一个元素的指针,m为行数, n为列数 ,请按第i列排列

// 输出:按第i列排序完成后的数组放到入参指定的地址中 (i的取值范围 1 - n)  

// 返回:

void RangeArray(int * pArray,unsigned int  m, unsigned int  n,unsigned int  i)  

{     

    i--;  

    if (pArray == NULL || m<=0 || n<=0 || i<0 || i>=n)  

    {  

        return;  

    }  

    for (int j=0;j<m;j++)  

    {  

        for (int k=j+1;k<m;k++)  

        {  

            for (int i2 = i; i2<n; i2++)  

            {  

                int aa = *(pArray+j*n+i2);  

                int bb = *(pArray+k*n+i2);  

                if (*(pArray+j*n+i2) > *(pArray+k*n+i2))  

                {  

                    for (int nIndex=0;nIndex<n;nIndex++)  

                    {  

                        int temp = pArray[j*n + nIndex];  

                        pArray[j*n + nIndex] =  pArray[k*n + nIndex];  

                        pArray[k*n + nIndex] = temp;  

                    }  

                    break;  

                }else if (*(pArray+j*n+i2) == *(pArray+k*n+i2))  

                {  

                    continue;  

                }else if(*(pArray+j*n+i2) < *(pArray+k*n+i2))  

                {  

                    break;  

                }  

            }  

        }  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: