• 常见的四种排序算法


    常见的四种排序算法,至于其原理我就不在这里描述了,不懂原理的可以自己去百度,下面直接给出代码。

    void BubbleSort(int a[], int size, int order) //order为1代表升序,冒泡排序算法

    {
    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 order) //order为1代表升序,选择排序算法
    {
    int i, j, k;
    for(i=0;i<size-1;i++)
    {
    k=i;
    for(j=i+1;j<size;j++)
    {
    if((order)?(a[k]>a[j]):(a[k]<a[j])) k=j;
    }

    if(k!=i)
    {
    a[k]=a[k]^a[i];
    a[i]=a[k]^a[i];
    a[k]=a[k]^a[i];
    }
    }
    }




    void InsertSort(int a[], int size, int order) //order为1代表升序,插入排序算法
    {
    int i, j, k;
    for(i=1;i<size;i++)
    {
    k=a[i];
    j=i-1;
    while(((order)?(a[j]>k):(a[j]<k)) && j>=0)
    {
    a[j+1]=a[j];
    j--;
    }
    a[j+1]=k;
    }
    }




    void QuickSort(int a[], int size, int order) //order为1代表升序,快速排序算法
    {
    int i,j,k;
    if(size<=1) return;


    i=0;
    j=size-1;
    k=a[i];


    while(i!=j)
    {
    while(i!=j && ((order)?(a[j]>=k):(a[j]<=k)))
    j--;
    a[i]=a[j];
    while(i!=j && ((order)?(a[i]<=k):(a[i]>=k)))
    i++;
    a[j]=a[i];
    }


    a[i]=k;
    QuickSort(a,i,1);
    QuickSort(a+i+1,size-i-1,1);

    }


    以上四种算法经过多次验证,不存在问题。当然还有其他的排序算法,后序用到了在补上。

    Do one thing at a time,and do well.
  • 相关阅读:
    ubuntu系统安装初始化脚本
    21_多线程
    20_IO
    19_异常
    18_集合
    17_内部类和常用类
    16_接口
    15_abstract,static,final
    14_面向对象
    13_数组
  • 原文地址:https://www.cnblogs.com/huiz/p/9610693.html
Copyright © 2020-2023  润新知