最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用c語言實現(xiàn)冒泡排序,選擇排序,快速排序

 更新時間:2013年05月28日 15:19:35   作者:  
本篇文章是對使用c語言實現(xiàn)冒泡排序,選擇排序,快速排序的代碼進行了詳細的分析介紹,需要的朋友參考下
代碼如下所示:
復(fù)制代碼 代碼如下:

/*
 * 冒泡排序
 */
void BubbleSort(int arr[], int n)
{
 int temp;
 for (int i = 0; i < n - 1; i++)
 {
  for (int j = i + 1; j < n; j++)
  {
   if (arr[i] > arr[j])
   {
    temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
   }
  }
 }
}
/*
 * 選擇排序
 */
void ChooseSort(int arr[], int n)
{
 int temp, k;
 for (int i = 0; i < n - 1; i++)
 {
  k = i;
  for (int j = i + 1; j < n; j++)
  {
   if (arr[k] > arr[j])
   {
    k = j;
   }
  }
  if (k != i)
  {
   temp = arr[i];
   arr[i] = arr[k];
   arr[k] = temp;
  }
 }
}
/*
 * 快速排序,官方原版
 */
void q_sort(int numbers[], int left, int right)
{
 int pivot, l_hold, r_hold;
 l_hold = left;
 r_hold = right;
 pivot = numbers[left];
 while (left < right)
 {
  while ((numbers[right] >= pivot) && (left < right))
  {
   right--;
  }
  if (left != right)
  {
   numbers[left] = numbers[right];
   left++;
  }
  while ((numbers[left] <= pivot) && (left < right))
  {
   left++;
  }
  if (left != right)
  {
   numbers[right] = numbers[left];
   right--;
  }
 }
 numbers[left] = pivot;
 pivot = left;
 left = l_hold;
 right = r_hold;
 if (left < pivot)
 {
  q_sort(numbers, left, pivot-1);
 }
 if (right > pivot)
 {
  q_sort(numbers, pivot+1, right);
 }
}
/*
 * 快速排序
 */
void quick_sort(int *x, int low, int high)
{
 int i, j, t;
 if (low < high) /*要排序的元素起止下標,保證小的放在左邊,大的放在右邊。這里以下標為low的元素為基準點*/
 {
  i = low;
  j = high;
  t = *(x+low); /*暫存基準點的數(shù)*/
  while (i<j) /*循環(huán)掃描*/
  {
   while (i<j && *(x+j)>t) /*在右邊的只要比基準點大仍放在右邊*/
   {
    j--; /*前移一個位置*/
   }
   if (i<j)
   {
    *(x+i) = *(x+j); /*上面的循環(huán)退出:即出現(xiàn)比基準點小的數(shù),替換基準點的數(shù)*/
    i++; /*后移一個位置,并以此為基準點*/
   }
   while (i<j && *(x+i)<=t) /*在左邊的只要小于等于基準點仍放在左邊*/
   {
    i++; /*后移一個位置*/
   }
   if (i<j)
   {
    *(x+j) = *(x+i); /*上面的循環(huán)退出:即出現(xiàn)比基準點大的數(shù),放到右邊*/
    j--; /*前移一個位置*/
   }
  }
  *(x+i) = t; /*一遍掃描完后,放到適當(dāng)位置*/
  quick_sort(x,low,i-1);  /*對基準點左邊的數(shù)再執(zhí)行快速排序*/
  quick_sort(x,i+1,high);  /*對基準點右邊的數(shù)再執(zhí)行快速排序*/
 }
}
// 輸出數(shù)組元素
void outArray(int arr[], int n)
{
 for(int i = 0; i < n; i++)
 {
  cout<<arr[i]<<" ";
 }
 cout<<endl;
}
void main()
{
 const int N = 5;
 int arr1[N] = {4, 3, 5, 2, 1};
 int arr2[N] = {4, 3, 5, 2, 1};
 int arr3[N] = {4, 3, 5, 2, 1};
 cout<<"Before bubble sort"<<endl;
 outArray(arr1, N);
 BubbleSort(arr1, N);
 cout<<"After bubble sort"<<endl;
 outArray(arr1, N);
 cout<<"/nBefore chooose sort"<<endl;
 outArray(arr2, N);
 ChooseSort(arr2, N);
 cout<<"After chooose sort"<<endl;
 outArray(arr2, N);
 cout<<"/nBefore quick sort"<<endl;
 outArray(arr3, N);
 //q_sort(arr3,0, N - 1);
 quick_sort(arr3,0, N - 1);
 cout<<"After quick sort"<<endl;
 outArray(arr3, N);
 system("pause");
}

相關(guān)文章

  • 教你分辨C++堆與棧的區(qū)別

    教你分辨C++堆與棧的區(qū)別

    堆與棧的區(qū)別有:1、棧由系統(tǒng)自動分配,而堆是人為申請開辟;2、棧獲得的空間較小,而堆獲得的空間較大;3、棧由系統(tǒng)自動分配,速度較快,而堆一般速度比較慢;4、棧是連續(xù)的空間,而堆是不連續(xù)的空間
    2021-06-06
  • C語言中關(guān)于指針變量的坑

    C語言中關(guān)于指針變量的坑

    這篇文章主要給大家介紹了關(guān)于C語言中關(guān)于指針變量坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C語言銀行系統(tǒng)課程設(shè)計

    C語言銀行系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細介紹了C語言銀行系統(tǒng)課程設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • QT+OpenCV實現(xiàn)錄屏功能

    QT+OpenCV實現(xiàn)錄屏功能

    這篇文章主要為大家詳細介紹了QT+OpenCV實現(xiàn)錄屏功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++中const char*、char const*、char * const三者的區(qū)別

    C++中const char*、char const*、char * const三者的區(qū)別

    這篇文章主要介紹了C++中const char*、char const*、char * const三者的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++11新增的包裝器詳解

    C++11新增的包裝器詳解

    由于函數(shù)調(diào)用可以使用函數(shù)名、函數(shù)指針、函數(shù)對象或有名稱的lambda表達式,可調(diào)用類型太豐富導(dǎo)致模板的效率極低。包裝器用于解決效率低的問題
    2022-08-08
  • C++中std::tuple和std::pair的高級用法

    C++中std::tuple和std::pair的高級用法

    本文主要介紹了C++標準庫中std::pair和std::tuple的使用,包括它們的基本概念、使用場景、區(qū)別以及高級用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • C++?OpenCV實戰(zhàn)之車道檢測

    C++?OpenCV實戰(zhàn)之車道檢測

    這篇文章主要介紹了基于C++?OpenCV實現(xiàn)的車道檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++編譯/編輯器對OIer的必要功能(推薦)

    C++編譯/編輯器對OIer的必要功能(推薦)

    這篇文章主要介紹了C++編譯/編輯器對OIer的必要功能,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 基于opencv實現(xiàn)車道線檢測

    基于opencv實現(xiàn)車道線檢測

    這篇文章主要為大家詳細介紹了基于opencv實現(xiàn)車道線檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02

最新評論

甘德县| 潍坊市| 含山县| 察哈| 博湖县| 井冈山市| 天等县| 大同县| 西青区| 永胜县| 武冈市| 珠海市| 准格尔旗| 汪清县| 同心县| 五家渠市| 山西省| 丘北县| 林甸县| 名山县| 河北省| 新蔡县| 德安县| 剑阁县| 崇文区| 徐州市| 娄底市| 锦州市| 湖南省| 桓台县| 平顶山市| 碌曲县| 武宣县| 东光县| 舒兰市| 盘山县| 清流县| 齐河县| 宝鸡市| 徐汇区| 本溪市|