单链表的折半查找,冒泡排序,选择排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表的折半查找,冒泡排序,选择排序相关的知识,希望对你有一定的参考价值。

//选择排序

void SelectSort(SeqList* pSeqList)

{

                 int i = 0, j = 0;

                 int iMaxPos = 0;

                 int iMinPos = 0;


                DataType temp;

for (; i < pSeqList->Size/2; ++i)

   {

          iMaxPos = i;

          iMinPos = i;

      for(j = 1; j < pSeqList->Size - i; j++)

           {

            if (pSeqList->arry[iMaxPos] < pSeqList->arry[j])

                     {

                                 iMaxPos = j;

                     }


            if (pSeqList->arry[iMinPos] > pSeqList->arry[j])

                     {

                              iMinPos = j;

                       }

            }


        if (iMaxPos != i)

          {

                   temp = pSeqList->arry[iMaxPos];

               pSeqList->arry[iMaxPos] = pSeqList->arry[pSeqList->Size - i - 1];

                pSeqList->arry[pSeqList->Size - i - 1] = temp;

            }


         if (iMinPos != i)

         {

                 temp = pSeqList->arry[iMinPos];

                   pSeqList->arry[iMinPos] = pSeqList->arry[i];

                   pSeqList->arry[i] = temp;

           }

    }

}

//冒泡排序

void BorbbleSort(SeqList* pSeqList)

{

                 int iCount = 0;

                 int iBegin = 0;

                 int iFlag = 0;

                 if (NULL == pSeqList)

                {

                                 return;

                }


        for (; iCount <pSeqList->Size - 1; iCount++)

        {

               iFlag = 1;

               for (iBegin = 0; iBegin < pSeqList->Size - iCount - 1; ++iBegin)

                {

                    if (pSeqList->arry[iBegin] > pSeqList->arry[iBegin+1])

                      {

                                DataType temp = pSeqList->arry[iBegin];

                                pSeqList->arry[iBegin] = pSeqList->arry[iBegin+1];

                                pSeqList->arry[iBegin+1] = temp;

                                 iFlag = 0;

                        }

                   }

                   if (iFlag)

                   {

                          return;

                    }

          }

}


// 折半查找

int BinarySearch(SeqList* pSeqList, DataType data)

{

                 int iLeft = 0;

                 int iRight = pSeqList->Size;// [)

                 //int iMid = (iLeft + iRight)/2;

                 int iMid = 0;

                DataType temp;

                 if (NULL == pSeqList)

                {

                                 return;

                }


                 // [0, 4]

                 while(iLeft < iRight)

                {

                                iMid = iLeft + (iRight - iLeft)/2;

                                temp = pSeqList->arry[iMid];

                                 if (temp < data)

                                {

                                                iLeft = iMid;

                                }

                                 else if (temp > data)

                                {

                                                iRight = iMid - 1;

                                }

                                 else

                                {

                                                 return iMid;

                                }

                }


                 return -1;

}


以上是关于单链表的折半查找,冒泡排序,选择排序的主要内容,如果未能解决你的问题,请参考以下文章

选择排序和冒泡排序以及折半查找

01. Java的经典排序--选择排序--冒泡排序--折半查找(二分查找)

Java——选择冒泡排序折半查找

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

数组常用算法之冒泡排序二分查找(折半查找)

冒泡排序折半查找二叉树遍历算法