Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43399
  • 博文数量: 24
  • 博客积分: 920
  • 博客等级: 准尉
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-05 11:10
文章分类
文章存档

2011年(1)

2010年(3)

2009年(20)

我的朋友
最近访客

分类: C/C++

2009-10-22 09:36:11

主要排序算法:冒泡排序、快速排序
一、
冒泡排序算法的思想:很简单,每次遍历完序列都把最大(小)的元素放在最后面,然后再对剩下的序列重复前面的一个过程,每次遍历完之后待排序序列就少一个元素,当待排序序列减小为只有一个元素的时候排序就结束了.
算法时间复杂度,O(n2)
#include
int Data[10]={12,3,27,9,19,1,7,21,24,17};
void swap(int *a,int *b)
{
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
}
void Bubble_Sort(int array[],int length)
{
    int i,j;
    for(i=0;i    {
        for(j=i+1;j        {
            if(array[i]>array[j])
            {
                swap(&array[i],&array[j]);
            }
        }
    }
}
int main()
{
    int k;
    Bubble_Sort(Data,10);
    for(k=0;k<10;k++)
    {
        printf("Data[%d]=%d ",k,Data[k]);
        if((k+1)%5==0)
            printf("\n");
    }
    return 1;
}
二、
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
#include
int data[10]={17,47,28,63,13,15,32,53,48,99};
void quick_sort(int array[],int low,int high)
{
    int i,j,pivot;
    if(low    {
        pivot=array[low];
        i=low;
        j=high;
        while(i        {
            while (i=pivot)
                j--;
            if(i                array[i++]=array[j];//将比枢轴记录小的记录移到低端                  
            while (i                i++;
            if(i                array[j--]=array[i];//将比枢轴记录大的记录移到高端
        }
        array[i]=pivot;//枢轴记录移到最终位置
        quick_sort(array,low,i-1);
        quick_sort(array,i+1,high);
    }
}
int main()

    quick_sort(data,0,9);   
    int i;   
    for(i=0;i<10;i++)
    printf("data[%d]=%d\n",i,data[i]);
    return 1;
}
阅读(474) | 评论(0) | 转发(0) |
0

上一篇:查找算法

下一篇:正则表达式

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