首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用直接插入排序对数组中的元素进行升序降序处理解决方法

2012-03-04 
用直接插入排序对数组中的元素进行升序降序处理代码如下//对数组里的元素进行排序C/C++ code#includestdi

用直接插入排序对数组中的元素进行升序降序处理
代码如下

//对数组里的元素进行排序

C/C++ code
#include<stdio.h>#include<conio.h>void downsort(int v[],int n);     //降序函数声明 void downsort_2(int v[],int n);    //降序函数声明 ,多一个参数的形式 void   upsort(int v[],int n);   //升序函数声明void upsort_2(int v[],int n);    //升序函数声明,多一个参数的形式 main() {    int a[8]={46,58,15,45,90,18,10,62};    int n=8;//    upsort(a,n);//  upsort_2(a,n);//  downsort_2(a,n);    downsort(a,n);    _getch();    return(0);}void upsort(int a[],int n){    int i,j,temp;    for(i=1;i<n;i++)    {        temp = a[i];        for(j=i;j>0 && temp<a[j-1];--j)        {            a[j] = a[j-1];        }    a[j] = temp;    }    printf("数组a[]升序排列后:\n\a");    for(i=0;i<n;i++)    {        printf("a[%d]=%d\n",i,a[i]);    }}void downsort(int a[],int n){    int i,j,temp;    for(i=1;i<n;i++)    {        temp = a[i];        for(j=i;j>0 && temp>a[j-1];--j)        {         a[j-1] = a[j];       /*逻辑有点搞不清啦,这里赋值后a[j-1]的数据会丢失,能不能把downsort函数写的跟upsort函数一样写的那样短小精悍,downsort_2多了个变量,效率也低。  */        }    }    printf("数组a[]降序排列后:\n\a");      for(i=0;i<n;i++)    {        printf("a[%d]=%d\n",i,a[i]);    }}void upsort_2(int a[],int n){    int i,j,temp,big;    for(i=1;i<n;i++)    {        temp = a[i];        for(j=i;j>0 && temp<a[j-1];--j)        {            big = a[j];            a[j] = a[j-1];            a[j-1] = big;        }    }    printf("数组a[]升序排列后:\n\a");    for(i=0;i<n;i++)    {        printf("a[%d]=%d\n",i,a[i]);    }}void downsort_2(int a[],int n){    int i,j,temp,small;    for(i=1;i<n;i++)    {        temp = a[i];        for(j=i;j>0 && temp>a[j-1];--j)        {         small = a[j-1];         a[j-1] = a[j];         a[j] = small;        }    }    printf("数组a[]降序排列后:\n\a");      for(i=0;i<n;i++)    {        printf("a[%d]=%d\n",i,a[i]);    }}

通过调用函数downsort_2 upsort upsort_2能够实现这个功能,函数downsort_2我怎么也实现不了这个功能,求解!!!谢谢

[解决办法]
C/C++ code
void InsertSort(int array[], int length)//直接插入排序{    int i, j;    int key;//存储将要插入的数据    printf("InsertSort\n");    for(i = 1; i < length; i++)    {        if(array[i] < array[i - 1])        {            key = array[i];            for(j = i - 1; key < array[j]; j--)                array[j + 1] = array[j];            array[j + 1] = key;        }    }} 

热点排行