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

C語言實現(xiàn)快速排序改進(jìn)版

 更新時間:2018年08月16日 08:41:25   作者:我站在橋上看風(fēng)景  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)快速排序的改進(jìn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

利用三者取中法改進(jìn)快速排序,具體內(nèi)容如下

實現(xiàn)取數(shù)組中第一個,中間和最后一個元素的中間元素作為劃分元素(否則將這些元素排除在劃分過程之外).大小為11或更小的數(shù)組在劃分過程中被忽略,然后使用插入排序來完成排序.

#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <stack>
#include <queue>
#include <malloc.h>
using namespace std;
#define OK 1
#define ERROR -1
#define TRUE 1
#define FALSE 0
typedef int Status;
//輸出函數(shù)
void Print(int a[], int l, int r)
{
 int i;
 for(i = l; i <= r; i++)
 {
  printf("%d ", a[i]);
 }
 printf("\n");
}
//插入排序的改進(jìn)
void Insertion(int a[], int l, int r)
{
 int i, j;
 //循環(huán)找到數(shù)組中的最小值
 for(i = r; i > l; i--)
 {
  if(a[i-1] > a[i])
  {
   swap(a[i-1], a[i]);
  }
 }
 //由于上面的循環(huán),a[0]a[1]已經(jīng)有序
 for(i = l+2; i <= r; i++)
 {
  int temp = a[i];
  j = i;
  //此時a[j]的位置已被記錄
  //while循環(huán)比較進(jìn)行移位操作
  while(temp < a[j-1])
  {
   a[j] = a[j-1];
   j--;
  }
  //將記錄下的值放到應(yīng)當(dāng)?shù)奈恢?
  a[j] = temp;
 }
}
//劃分函數(shù)
int partion(int a[], int left, int right)
{
 //取最右邊的元素作劃分元素
 int temp = a[right];
 //記錄 i = left, j = right
 int i = left, j = right-1;
 //循環(huán)直到左右指針相遇
 while(true)
 {
  //從左邊開始掃描,當(dāng)出現(xiàn)比劃分元素大的元素,掃描停止
  while(temp > a[i])
  {
   i++;
  }
  //從右邊進(jìn)行掃描,當(dāng)出現(xiàn)比劃分元素小的元素,掃描停止
  while(temp < a[j] && j >= left)
  {
   j--;
  }
  //如果 i >= j, 循環(huán)截止,下面的交換不執(zhí)行
  if(i >= j) break;
  //交換停止時的元素
  swap(a[i], a[j]);
 }
 //交換該元素與劃分元素
 swap(a[i], a[right]);
 //printf("i = %d\n", i);
 //Print(a, 0, 6);
 //劃分過程結(jié)束
 return i;
}
 
void qsort(int a[], int left, int right)
{
 int i;
 if(right-left <= 10)
  return;
 swap(a[(left+right)/2], a[right-1]);
 if(a[left] > a[right-1])
  swap(a[left], a[right-1]);
 if(a[left] > a[right])
  swap(a[left], a[right]);
 if(a[right] > a[right-1])
  swap(a[right-1], a[right]);
 i = partion(a, left+1, right-1);
 qsort(a, left, i-1);
 qsort(a, i+1, right);
}
void Sort(int a[], int left, int right)
{
 qsort(a, left, right);
 Insertion(a, left, right);
}
 
int main()
{
 int a[12] = {2, 5, 3, 7, 6, 1, 4, 11, 8, 10, 9, 12};
 //快速排序改進(jìn)
 printf("對0~11排序\n");
 Sort(a, 0, 11);
 Print(a, 0, 11);
 return 0;
}

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++中默認(rèn)無參構(gòu)造函數(shù)的工作機(jī)制淺析

    C++中默認(rèn)無參構(gòu)造函數(shù)的工作機(jī)制淺析

    構(gòu)造函數(shù)主要作用在于創(chuàng)建對象時為對象的成員屬性賦值,構(gòu)造函數(shù)由編譯器自動調(diào)用,無須手動調(diào)用;析構(gòu)函數(shù)主要作用在于對象銷毀前系統(tǒng)自動調(diào)用,執(zhí)行一些清理工作
    2023-02-02
  • C++類中const修飾的成員函數(shù)及日期類小練習(xí)

    C++類中const修飾的成員函數(shù)及日期類小練習(xí)

    將const修飾的“成員函數(shù)”稱之為const成員函數(shù),const修飾類成員函數(shù),表明在該成員函數(shù)中不能對類的任何成員進(jìn)行修改,下面這篇文章主要給大家介紹了關(guān)于C++類中const修飾的成員函數(shù)及日期類小練習(xí)?的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • c++實現(xiàn)解析zip文件的示例代碼

    c++實現(xiàn)解析zip文件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用c++實現(xiàn)解析zip文件,并對流式文件pptx內(nèi)容的修改,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2023-12-12
  • Qt視頻播放器的實現(xiàn)示例

    Qt視頻播放器的實現(xiàn)示例

    本文主要介紹了Qt視頻播放器的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • C語言超市管理系統(tǒng)設(shè)計

    C語言超市管理系統(tǒng)設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C語言超市管理系統(tǒng)設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • c語言打開文件函數(shù)使用方法

    c語言打開文件函數(shù)使用方法

    這篇文章主要介紹了c語言打開文件函數(shù)使用方法,需要的朋友可以參考下
    2014-02-02
  • ?C++模板template原理解析

    ?C++模板template原理解析

    這篇文章主要介紹了C++模板template原理,函數(shù)模板代表了一個函數(shù)家族,該函數(shù)模板與類型無關(guān),在使用時被參數(shù)化,根據(jù)實參類型產(chǎn)生函數(shù)的特定類型版本
    2022-07-07
  • C++入門筆記之std::vector容器詳解

    C++入門筆記之std::vector容器詳解

    這篇文章主要給大家介紹了關(guān)于C++之std::vector容器的相關(guān)資料,vector,一種隨機(jī)訪問的數(shù)組類型,它提供了對數(shù)組元素的快速、隨機(jī)訪問,以及在序列尾部快速、隨機(jī)的插入和刪除操作,需要的朋友可以參考下
    2021-07-07
  • C語言實現(xiàn)通訊錄的方法(包括靜態(tài)版本和動態(tài)版本)

    C語言實現(xiàn)通訊錄的方法(包括靜態(tài)版本和動態(tài)版本)

    本文給大家分享C語言實現(xiàn)通訊錄的方法(包括靜態(tài)版本和動態(tài)版本),針對每種方法給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-09-09
  • linux c++模擬簡易網(wǎng)絡(luò)爬蟲實例

    linux c++模擬簡易網(wǎng)絡(luò)爬蟲實例

    下面小編就為大家?guī)硪黄猯inux c++模擬簡易網(wǎng)絡(luò)爬蟲實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

庆云县| 扬州市| 永寿县| 道真| 华安县| 油尖旺区| 从江县| 平果县| 湖南省| 高台县| 昆山市| 教育| 中西区| 资中县| 奉新县| 左贡县| 连城县| 阿克陶县| 广汉市| 阳信县| 鄂尔多斯市| 峡江县| 那曲县| 兴宁市| 孙吴县| 淳安县| 行唐县| 盐亭县| 蓬莱市| 罗城| 合水县| 瑞昌市| 西充县| 西充县| 靖边县| 文昌市| 吕梁市| 菏泽市| 晴隆县| 蒙阴县| 滦南县|