美文网首页
排序算法

排序算法

作者: 走过路过_97c2 | 来源:发表于2017-06-01 11:01 被阅读0次

    冒泡排序算法
    //如果order为1,则升序排序,否则降序排序
    void BubbleSort(int a[],int size,int order)
    {
    int i,j;
    for(i=0;i<size-1;i++)
    {
    for(j=0;j<size-i-1;j++)
    {
    if((order)?(a[j]>a[j+1]):(a[j]<a[j+1]))
    {
    a[j]=a[j]^a[j+1];
    a[j+1]=a[j]^a[j+1];
    a[j]=a[j]^a[j+1];
    }
    }
    }
    }

    选择排序算法
    void SelectSort(int a[],int size)
    {
    int i,j;
    for(i=0;i<size-1;i++)
    {
    for(j=i+1;j<size-1;j++)
    {
    if((a[i]<a[j])
    {
    a[j]=a[j]^a[j+1];
    a[j+1]=a[j]^a[j+1];
    a[j]=a[j]^a[j+1];
    }
    }
    }

    //插入排序函数
    void InsertSort(int a[], int size)
    {
    int i,j,k;
    for(i=1;i<size;i++)
    {
    //a[i]插入a[0]...a[i-1]这个有序序列中

          k=a[i];
          j=i-1;
    
          while(j>=0 && a[j]>k))
          {
               a[j+1]=a[j];
               j--;
          }
    
          a[j+1]=k;
     }
    

    }

    //快速排序函数
    void QuickSort(int a[], int start, int end)
    {
    int i,j,k;

    if(start>=end) return;

    i=start;
    j=end;
    k=a[start];

    while(i!=j)
    {
    while(i!=j && (a[j]>=k)) j--;
    a[i]=a[j];

    while(i!=j && (a[i]<=k):) i++;
    a[j]=a[i];
    }

    a[i]=k;

    QuickSort(a,start,i-1);
    QuickSort(a,i+1,end);
    }

    相关文章

      网友评论

          本文标题:排序算法

          本文链接:https://www.haomeiwen.com/subject/phwsfxtx.html