zoukankan      html  css  js  c++  java
  • 常见的四种排序算法

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

    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.
  • 相关阅读:
    socat + kata + cgroup
    2018-8-10-卷积神经网络全面解析
    2019-8-31-PowerShell-通过-WMI-获取系统服务
    2019-8-31-PowerShell-通过-WMI-获取系统服务
    2018-2-13-不使用数据结构反转栈
    统计难题
    Keywords Search
    [JSOI2008]最大数
    Android(java)学习笔记1:多线程的引入
    欢迎使用CSDN-markdown编辑器
  • 原文地址:https://www.cnblogs.com/huiz/p/9610693.html
Copyright © 2011-2022 走看看