c语言函数二维排序 c语言函数排序一维数组
用C语言写一个函数对一个字符型二维数组排序,要求排列时根据字符多少由小到大排列
C语言版,C99标准
专注于为中小企业提供成都网站制作、成都网站建设、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业大邑县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
==========
#includestdio.h
#includestdlib.h
#includestring.h
int icomp(const void* pa, const void* pb){
char *a=(char*)*((char**)pa), *b=(char*)*((char**)pb);
int c;
while(*a || *b){
if(c=tolower(*a)-tolower(*b)) return c;
a++; b++;
}
return (c=tolower(*a)-tolower(*b))?c:0;
}
int main(int argc,char *agv[] )
{
char *str[]={"My", "At", "so", "you", "You", "how"};//等同与str[0]...[1]等等
int i,len=sizeof(str)/sizeof(char*);
qsort(str,len,sizeof(char*),icomp);
for(i=0;ilen;i++)
printf("%d. %s\n",i, str[i]);
return 0;
}
=============
0. At
1. how
2. My
3. so
4. You
5. you
C++11版,也没能化简
==========
#includeiostream
#includealgorithm
#includecstring
using namespace std;
int main(int argc,char *agv[] )
{
char *str[]={
"My","At","so","you","You","how"
};
int i,len=sizeof(str)/sizeof(char*);
sort(str,str+len,
[](string a,string b)-int{
string la(a),lb(b);
transform(a.begin(),a.end(),la.begin(),::tolower);
transform(b.begin(),b.end(),lb.begin(),::tolower);
int r=la.compare(lb);
return r?r0:a.compare(b)0;
}
);
for(i=0;ilen;i++)
printf("%d. %s\n",i, str[i]);
return 0;
}
c语言 用子函数编辑二维数组的输入 输出 排序 逆序
//December 10,2014 By 12952010
#includestdio.h
#define row 3
#define column 3
int sort(int array[][column]){//冒泡排序
int temp,j,i;
int arr[row*column];
int k=0;
for(i=0; irow; i++)
for( j=0; jcolumn ; j++){
arr[k++]= array[i][j];
}
for(i=0;irow*column-1;i++)
for(j=0;jrow*column-i-1; j++)
if(arr[j+1]arr[j]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
for(i=0 ,k=0; irow; i++)
for( j=0; jcolumn ; j++){
array[i][j]=arr[k++];
}
}
void show(int array[][column] ){//显示数组元素
for( int i=0 ; i row; i++ ) {
printf("\n");
for(int j=0; jcolumn; j++){
printf(" %4d ",array[i][j]);
}
}
}
void display(int array[][column]){//逆序输出
for(int i=row-1;i=0;i--){
printf("\n");
for(int j=column-1;j=0;j--)
printf(" %4d ",array[i][j]);
}
}
void setting(int array[][column]){//初始化数组
int temp=10;
for( int i=0; irow; i++ ){
for( int j=0; jcolumn; j++)
array[i][j]=temp--;
}
}
int main(){
int array[row][column];
setting(array);
printf("\n\n-------Befor sort---------\n");
show(array);
printf("\n\n-------逆序输出---------\n");
display(array);
printf("\n\n-------After sort---------\n");
sort(array);
show(array);
return 0;
}
用C语言写一个函数 于给定的二维数组 将其按下面的例子排序
参考:
#includeiostream
using namespace std;
int main()
{
int array[3][4]={{2,5,15,10},{13,24,3,6},{9,16,7,11}};
int b,temp,i,j=0,k=0,n=0,m=0;
int a[12],flag=0;
cout"排序前的数组:"endl;
for(i=0;i3;i++)
{
for(j=0;j4;j++)
coutarray[i][j]" ";
coutendl;
}
cout"排序后的数组:"endl;
for(i=0;i3;i++)//将一直数组存入一个一维数组中,在一维数组中先排好序从大到小
for(j=0;j4;j++)
{
a[k]=array[i][j];
k++;
}
for(k=0;k12;k++)
{
for(i=k+1;i12;i++)
if(a[k]a[i])
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
for(j=0;j4;j++)
{
switch(flag)//当flag=0时从上到下存回原数组, flag=1 时从下到上存储
{
case 0: for(n=0;n3;n++)
{
array[n][j]=a[m];
m++;
}
flag=1;break;
case 1: for(n=2;n=0;n--)
{
array[n][j]=a[m];
m++;
}
flag=0;break;
default:break;
}
}
for(i=0;i3;i++)//输出排好序的数组
{
for(j=0;j4;j++)
coutarray[i][j]" ";
coutendl;
}
system("pause");
}
用c++编的
分享标题:c语言函数二维排序 c语言函数排序一维数组
URL网址:http://ybzwz.com/article/docpjhh.html