Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7724133
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: C/C++

2011-05-31 10:41:31

/*

 *  简单排序实现

 *  Lzy    2011-5-25

 */

#include

#define N 8

 

void Insert_Srot(int X[], int n)               /*插入排序(升序)*/

{

    int temp;

    int i,j;

 

    for(i = 1; i < n; i++)

    {

        temp = X[i];                          /*取出无序序列中的一个数据元素*/

        for(j = i; temp < X[j-1] && j >=0; j--)   /*在已排序的序列中从后向前扫描*/

            X[j] = X[j-1];                        /*插入位置后的数据元素后移*/

       

        X[j] = temp;                          /*数据插入有序序列中*/

    }  

}

 

void Bubble_Srot(int X[], int n)           /*冒泡排序(升序)*/

{

    int i,j;

    int temp;

 

    for(i = n; i > 1; i--)               /*进行n-1趟排序*/

    {

        for(j = 0; j < i-1; j++)     /*每趟排序进行i-1次数据判断*/

        {

            if(X[j] > X[j+1])         /*比较相邻两个数据元素*/

            {

                temp = X[j];          /*交换数据元素*/

                X[j] = X[j+1];

                X[j+1] = temp;

            }

        }

    }

}

 

 

void Select_Srot(int X[], int n)       /*选择排序*/

{

    int i, j, k;

    int temp;

 

    for(i = 0; i < n-1; i++)         /*进行n-1趟排序,每趟选出1个最小记录*/

    {

        k = i;

        for(j = i +1; j < n; j++)       /*在其它数据元素中继续查找最小数据*/

        {

            if(X[k] > X[j])               /*记录最小数据元素的位置*/

                k = j;

        }

 

        if(k != i)                     /*数据交换*/

        {

            temp = X[k];

            X[k] = X[i];

            X[i] = temp;

        }

 

    }

}

 

/******测试程序*******/

int main(void)

{

    int i;

    int X[N] = {26,23,96,13,36,67,45,15};

    Select_Srot(X,N);

   

    for(i = 0; i < 8; i++)

        printf("%d ",X[i]);

 

}

阅读(1343) | 评论(0) | 转发(2) |
0

上一篇:宏定义

下一篇:递归方法实现快速排序

给主人留下些什么吧!~~