简单排序算法

来源:互联网 发布:js 扩展window对象 编辑:程序博客网 时间:2024/06/13 17:35

第一个:冒泡排序:
简单来说,就是不停的与旁边的比较,然后交换,总之运算的交换次数挺多的,后面再来比较几种排序方法

void bubblesorthead(int* pData, int Count){    int itemp;    for(int i = 0; i < Count - 1; i++)    {        for(int j = 1; j <= i + 1; j ++)        {            if(pData[j - 1] < pData[j])            {                itemp = pData[j + 1];                pData[j + 1] = pData[j];                pData[j] = itemp;            }        }    }}

这是一种实现形式,还有另一种

void bubblesorttail(int* pData, int Count){    int iTemp;    for(int i = 0; i < Count; i ++)    {        for(int j = Count - 1; j >= i; j --)        {            if(pData[j] < pData[j - 1])            {                iTemp = pData[j - 1];                pData[j - 1] = pData[j];                pData[j] = iTemp;            }        }       }}

第二个:选择排序:这种排序感觉跟冒泡排序差不多,如果数据较多都很麻烦,就是一个数一个数的找,找出第n个最大的,再找第 n - 1个最大的……一直找到倒数第二个。

void SelectSort(int* pData,int Count){    int iTemp;    int iPos;    for(int i=0; i<Count-1; i++)    {         iTemp = pData[i];          iPos = i;             for(int j=i+1; j<Count; j++)             {                 if(pData[j] < iTemp)                 {                     iTemp = pData[j];                     iPos = j;                 }             }             pData[iPos] = pData[i];             pData[i] = iTemp;    } }

第三个:插入排序,思想跟选择排序不同,但是比较好理解,就是为元素找合适的位置然后插入其中

void insert(int* pData, int count){    for(i = 1; i < count; i ++)    {        int j = 0;        while(j < i && pData[i] >= pData[j])        {            j ++;        }        if(j < i)        {            int k = i;            int temp = pData[i];            while(k > j)            {                pData[k] = pData[k - 1];                k --;            }            pData[k] = temp;        }    }}
0 0
原创粉丝点击