码迷,mamicode.com
首页 > 其他好文 > 详细

【Sorting Collection】

时间:2016-01-02 07:00:47      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

排序集锦

各种排序算法,总结一下,一直在遗忘......技术分享

 

 

 

【冒泡排序】

就是下面这个鬼啦:

技术分享

 

c实现代码(升序):

#include<stdio.h>

void BubbleSort(int *array,int num)
{
        int i,j,temp;
        for(j=0;j<num;j++)
    {
        for(i=1;i<num-j;i++)
                {
                        if(array[i-1]>array[i]) //倒序就把这里改成<咯
                        {
                                temp=array[i-1];
                                array[i-1]=array[i];
                                array[i]=temp;
                        }
                }
    }
}
int main()
{
        int num;
        scanf("%d",&num);
        int array[num]; 
        int i;
        for(i=0;i<num;i++)
        {
                scanf("%d",&array[i]);
        }
        /* Calling this functions sorts the array */
        BubbleSort(array,num); 
        for(i=0;i<num;i++)
        {
                printf("%d ",array[i]);
        }
        printf("\n");
        return 0;

}

 

【插入排序】

按顺序插入

技术分享

C语言实现:

#include<stdio.h>

void insertionsort(int *array,int num)
{
    int i,j;
    for(i=1;i<num;i++)
    {
        int current=array[i];
        j=i-1;
        while(j>=0 && array[j]>current)
        {
            array[j+1]=array[j];//后移为current空出位置
            j--;
        }
        array[j+1]=current;//将current插入空位
    }
}


int main()
{
    int num;
    scanf("%d",&num);
    int array[num];
    int i;
    for(i=0;i<num;i++)
    {
        scanf("%d",&array[i]);
    }
    insertionsort(array,num);
    for(i=0;i<num;i++)
    {
        printf("%d ",array[i]);
    }
    printf("\n");
    return 0;
} 

 

 

【希尔排序】

 C语言实现代

#include<stdio.h>
void shellsort(int *array,int num)
{
    int i,j,increment,temp;
    for(increment=num/2;increment>0;increment/=2)
    {
        for(i=increment;i<num;i++)
        {
            temp=array[i];
            for(j=i;i>=increment;j-=increment)
            {
                if(temp<array[j-increment])
                {
                    array[j]=array[j-increment];
                }    
                else
                {
                    break;
                }
            }  
            array[j]=temp;
        }  //这里其实跟普通插入一样咯,除了间隔大点
    }  //更改步长,直至最后increment=1,即为普通插入排序
}

int main()
{
        int num;
        scanf("%d",&num);
        int array[num]; 
        int i;
        for(i=0;i<num;i++)
        {
                scanf("%d",&array[i]);
        }
        shellsort(array,num); 
        for(i=0;i<num;i++)
        {
                printf("%d ",array[i]);
        }
        printf("\n");
        return 0;
}

 

【Sorting Collection】

标签:

原文地址:http://www.cnblogs.com/suzyc/p/5088215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!