算法导论 课后习题 2.1-2

2.1-2    重写过程INSERTION-SORT,使之按非升序(而不是按非降序)排序。

 

/*****************************************************************
**  函数说明:算法导论  插入排序 
**  版    本:V1.00								       
**  修    改:庞辉    芜湖联大飞思卡尔工作室             									       
**  修改日期:2011年09月24日 							   			   											   
**  说    明:无	                                                             
**  版本更新:详见readme.txt                                                                                         
******************************************************************
**  注    意:升序排列
******************************************************************/

#include <stdio.h>

/***********************************************************
** 名       称:void insertion_sort(int *in, int count)
** 功       能:插入排序
** 入口参数:in      待排序数组
**          count   待排序数组大小
** 出口参数:无
** 使用说明:无
**********************************************************/ 
void insertion_sort(int *in, int count)
{
        int i = 0, j = 0, temp = 0;

        for (i = 1; i < count; i++)
        {
                temp = in[i];
                j = i - 1;
                  while (j >= 0 && temp > in[j])
                {
                        in[j + 1] = in[j];
                        j--;
                }
                in[j + 1] = temp;
        }
}

/***********************************************************
** 名       称:int main(void)
** 功       能:主函数
** 入口参数:无
** 出口参数:无
** 使用说明:无
**********************************************************/ 
int main(void)
{
        int i = 0;
        int arr[10] = {12, 54, 2, 89, 41, 3, 90, 100, 30, 12};

        printf("原数组为:\n");
        for(i = 0; i < 10; i++)
        {
                printf("%d    ", arr[i]);
        }
        printf("\n");

        insertion_sort(arr, 10);

        printf("排序数组为:\n");
        for(i = 0; i < 10; i++)
        {
                printf("%d    ", arr[i]);
        }
        printf("\n");

        getchar();
        return 0;
}

你可能感兴趣的:(算法导论 课后习题 2.1-2)