Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2418849
  • 博文数量: 392
  • 博客积分: 7040
  • 博客等级: 少将
  • 技术积分: 4138
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-17 13:03
个人简介

范德萨发而为

文章分类

全部博文(392)

文章存档

2017年(5)

2016年(19)

2015年(34)

2014年(14)

2013年(47)

2012年(40)

2011年(51)

2010年(137)

2009年(45)

分类:

2010-03-30 17:23:25

完成程序,实现对数组的降序排序

#include <stdio.h>
void sort( );
int main()
{
int array[]={45,56,76,234,1,34,23,2,3}//数字任//意给出

sort( );
return 0;
}
void sort( )
{


下面是forum.byr.edu.cn上找到的一个解法

#include<stdio.h>
#include<string.h>
  
void sort() {

     /*栈向下增长,所以a在栈中的地址要低于array1*/
     int a;
     char *p;

     /*static变量,放在静态数据区中,而非栈中*/
     static int array2[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出

     static int array3[]={1,2,3,23,34,45,56,76,234}; //数字任//意给出

     p=(char*)&a;

     /*从a向上逐字节查找,直到找到array1的开始地址*/
     while(p++) {
         if(memcmp(p,array2,sizeof(array2))==0) {

             /*OK,找到array1的地址之后直接把排好序的数据copy过去*/
             memcpy(p,array3,sizeof(array3));
             return;
         }
     }
}
  
int main() {
     int i;

     /*利用了栈原理,这里的array1放在内存栈中*/
     int array1[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出

     /*接下来调用sort函数,sort函数中的临时变量也放在内存栈中*/
     sort();
     for(i=0;i<8;i++) {
         printf("%d\n",array1[i]);
     }
     return 0;
}


阅读(1124) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~