zoukankan      html  css  js  c++  java
  • 各种排序算法的C实现

    void BubbleSort(int *pData,int cout )//冒泡算法,可可以加个表示、flag 如果一趟没有元素交换说明已经有序。
    {
        int iTmep=0;
        for (int i=0;i<cout;i++)
            for(int j=1;j<cout-i;j++)
                if (pData[j-1]<pData[j])
                {
                    iTmep=pData[j-1];
                    pData[j-1]=pData[j];
                    pData[j]=iTmep;
                }
    }
    void ExchangeSort(int*pData,int count)
    {
        int iTmep=0;
        for (int i=0;i<count;i++)
            for(int j=i+1;j<count;j++)
                if (pData[j]<pData[i])
                {
                    iTmep=pData[i];
                    pData[i]=pData[j];
                    pData[j]=iTmep;
                }
    }
     1 void SelectSort(int *pData,int n)//选择排序
     2 {
     3     int temp;
     4     int pos;
     5     for (int i=0;i<n-1;i++)
     6     {
     7         temp=pData[i];
     8         pos=i;
     9         for (int j=i+1;j<n;j++)
    10         {
    11             if (pData[j]>temp)
    12             {
    13                 temp=pData[j];
    14                 pos=j;
    15             }
    16         }
    17         pData[pos]=pData[i];
    18         pData[i]=temp;
    19     }
    20 }
     1 void InsertSort(int *pData,int n)//插入排序
     2 {
     3     int temp;
     4     int K;
     5     for (int i=1;i<n;i++)
     6     {
     7         
     8         
     9             K=i-1;
    10             temp=pData[i];
    11             while ((temp<pData[K])&&(K>=0))
    12             {
    13                 pData[K+1]=pData[K];
    14                 K--;//每次执行的时候 K都减去了一; 所以必须重新插入的时候必须包含入内;
    15 
    16             }
    17             pData[K+1]=temp;
    18     
    19     }
    20 
    21 
    22 }

    快速排序 2种

     1 int Partion(int * pData,int Left,int Right)//取头元素为临界分割点
     2 {
     3     int i=Left;
     4     int j=Right;
     5     int Key=pData[Right];
     6     
     7     while (i<j)
     8     {
     9         while(pData[i]<Key&&i<Right)
    10             i++;
    11         pData[j]=pData[i];
    12         while(pData[j]>Key&&j>Left)
    13             j--;
    14         pData[i]=pData[j];
    15     }
    16     pData[i]=Key;
    17     return i;
    18 }
    19 void Quicksort(int *pData,int Left,int Right)
    20 {
    21     if (Left<Right)
    22     {
    23         int k=Partion(pData,Left,Right);
    24         Quicksort(pData,Left,k-1);
    25         Quicksort(pData,k+1,Right);
    26     }
    27     
    28 }
    void QucikSort(int *pData,int Left,int Right)//取中间点为临界点
    {
        int i=Left;
        int j=Right;
        int mid=(Left+Right)/2;
        int Key=pData[mid];
        int Temp=0;
        while (i<j)
        {
            while(pData[i]<Key&&i<Right)
                i++;
            while(pData[j]>Key&&j>Left)
                j--;
            if (i<=j)
            {
                Temp=pData[j];
                pData[j]=pData[i];
                pData[i]=Temp;
                i++;
                j--;
            }
        }
        if (i<Right)
        {
            QucikSort(pData,i,Right);
        }
        if (j>Left)
        {
            QucikSort(pData,Left,j);
        }
  • 相关阅读:
    fpga配置方式 .jic固化为ps模式
    fpga新建nios
    四轴飞行器飞行原理与双闭环PID控制
    fpga为什么要用nios 开发
    error A space is required after ',' comma-spacing
    vuex : Newline required at end of file but not found eol-last
    vue -Missing space before value for key 'path'vue.js解决空格报错
    visual studio 自动补全功能 以及代码没有颜色
    hadoop 伪分布模式环境搭建
    django框架-DRF工程之认证功能
  • 原文地址:https://www.cnblogs.com/HuaiNianCiSheng/p/3270563.html
Copyright © 2011-2022 走看看