亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

常用排序算法整理分享(快速排序算法、希爾排序)

2020-01-26 15:33:58
字體:
來源:轉載
供稿:網友

整理了幾個排序算法,通過測試來看,最快的還是快速排序算法,簡直不是一個數量級的速度。

復制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <time.h>
#include <unistd.h>

//一些排序算法整理
//插入排序算法
//直接插入排序
void
direct_insert_sort(int *a,int len)
{
 //思路:最后一個依次和前面的進行比較
 //將滿足的條件的往后移動,當然是從頭
 //開始且是從最小比較數組開始逐漸擴大
 //到整個數組
 int i,j,temp;
 for(i = 1;i < len;++i) {
  //獲取最后一個索引數據
  temp = a[i];
  for(j = i - 1;j >= 0;--j) {
   //從倒數第二個開始
   if(a[j] > temp)//升序排列
    a[j + 1] = a[j];
   else
    break;//立刻退出
  }
  //將最后一個位置插入到合適的位置
  a[j + 1] = temp;
 }
}

//希爾排序
void
shell_insert_sort(int *a,int len)
{
 //思路:就是比直接插入排序多了層
 //循環,這層循環是用來控制步進按
 //照算法的本來思路是這樣可以減少
 //交換次數
 int i,j,h,temp;
 for(h = len / 2;h > 0;h /= 2) {
  //內層其實本質還是直接插入
  //算法思路
  //注意下i += h和i++兩者對算
  //法的影響
  for(i = h;i < len;i += h) {
   //獲取最后一個索引的值
   temp = a[i];
   for(j = i - h;j >= 0;j -= h) {
    if(a[j] > temp)//升序排列
     a[j + h] = a[j];
    else
     break;
   }
   //將找到的位置插入最后一個索引
   a[j + h] = temp;
  }
 }
}

//選擇排序
//冒泡排序
void
bubble_swap_sort(int *a,int len)
{
 //思路:從數組最后開始兩兩比較
 //將底層滿足要求的數據逐漸交換
 //到上層,可能導致交換次數太多
 int i,j,temp;
 //如果一次冒泡中沒有發生交換可
 //以認為此次排列已經結束
 bool exchange = false;
 for(i = 0;i < len - 1;++i) {
  for(j = len - 1;j > i;--j) {
   //滿足條件的就進行交換
   if(a[j] < a[j - 1]) {
    temp = a[j];
    a[j] = a[j - 1];
    a[j - 1] = temp;
    exchange = true;
   }
  }
  if(exchange)
   exchange = false;
  else
   break;
 }
}

//快速排序
void
quick_swap_sort(int *a,int low,int high)
{
 //思路:從數組中找一個值
 //然后排列數組使其兩邊要
 //么大于要么小于這個值,
 //然后遞歸下去排序
 //優勢在于每次找中間值可
 //以交換很多次。
 int _low,_high,qivot;
 if(low < high) {
  _low = low;
  _high = high;
  //這里從最后一個開始
  qivot = a[low];
  //找中間值的辦法就是逐漸逼近
  //從頭尾兩端開始逼近,順便也
  //排序了
  while(_low < _high) {
   //既然是從low開始,那么首先
   //就從high找小于qivot的(升
   //序排列)
   while(_low < _high && a[_high] > qivot)
    --_high;//逐漸向中間逼近
   if(_low < _high)//必然是找到了a[_high] > qivot的情況
    a[_low++] = a[_high];
   //這下a[_high]空出位置來了,所以從low找
   //比qivot大的數據
   while(_low < _high && a[_low] < qivot)
    --_low;//逼近中間
   if(_low < _high)
    a[_high--] = a[_low];
  }
  //最后_low == _high那么這個位置就是qivot的位置
  a[_low] = qivot;
  //遞歸下去
  quick_swap_sort(a,low,_high - 1);
  quick_swap_sort(a,_low + 1,high);
 }
}

//選擇排序
//直接選擇排序
void
direct_select_sort(int *a,int len)
{
 //思路:就是遍歷數組找到極值
 //放到頭或者尾,這樣逐漸縮小
 //范圍到最小比較數組
 int i,j,pos,temp;
 for(i = 0;i < len - 1;++i) {
  //從頭開始獲取一個值假設為極值
  pos = i;
  for(j = i + 1;j < len;++j) {
   //滿足條件
   if(a[pos] > a[j])//升序
    pos = j;
  }
  if(pos != i) {
   //進行交換
   temp = a[pos];
   a[pos] = a[i];
   a[i] = temp;
  }
 }
}

void
disp(int *a,int len)
{
 int i = 0;
 for(;i < len;i++) {
  if(i != 0 && i % 16 == 0)
   printf("/n");
  printf(" %d",a[i]);
 }
 printf("/n");
}

#define TEST_ARRAY_LEN 100000
#define TEST_COUNT 1

int
main(int argc,char *argv[])
{
 //int a[] = {1,8,4,0,9,6,3,7,2,18,74,5,64,12,39};
 //int len = sizeof(a) / sizeof(a[0]);
 //direct_insert_sort(a,len);
 //shell_insert_sort(a,len);
 //bubble_swap_sort(a,len);
 //quick_swap_sort(a,0,len - 1);
 //direct_select_sort(a,len);
 disp(a,len);

 return 0;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品免费网站| 色偷偷噜噜噜亚洲男人的天堂| 亚洲综合日韩在线| 日韩成人小视频| 亚洲精品国产精品乱码不99按摩| 欧美乱大交做爰xxxⅹ性3| 久久99久久久久久久噜噜| 欧美激情在线有限公司| 91色在线观看| 欧美日韩国产一区二区三区| 欧美亚洲视频一区二区| 97av在线视频免费播放| 亚洲第一区在线| 国产精品高潮呻吟久久av黑人| 亚洲人成网7777777国产| 国产精品高潮在线| 国产亚洲成av人片在线观看桃| 丝袜情趣国产精品| 91在线高清免费观看| 黄色一区二区在线| 青草青草久热精品视频在线网站| 精品欧美激情精品一区| 国产精品黄色av| 欧美极度另类性三渗透| 九九热精品视频在线播放| 欧美精品制服第一页| 精品福利视频导航| 国产精品2018| 一区二区三区动漫| 日韩精品在线观看一区二区| 日韩电影免费观看中文字幕| 久久综合伊人77777蜜臀| 青草热久免费精品视频| 久久久亚洲欧洲日产国码aⅴ| 大量国产精品视频| 国产精品∨欧美精品v日韩精品| 高清欧美性猛交xxxx黑人猛交| 4438全国成人免费| 国产精品久久久久99| 日韩在线激情视频| 91精品久久久久久久久中文字幕| 国产精品日韩久久久久| 亚洲精品日韩激情在线电影| 久久777国产线看观看精品| 久久视频免费观看| 国产精品爽爽ⅴa在线观看| 亚洲男人第一av网站| 亚洲一区二区黄| 久久99青青精品免费观看| 97在线看免费观看视频在线观看| 97精品国产97久久久久久| 中文字幕九色91在线| 日韩欧美在线中文字幕| 欧美成人高清视频| 久久中文字幕视频| 不卡中文字幕av| 精品福利在线视频| 欧美激情视频一区二区三区不卡| 国产亚洲精品一区二区| 亚洲已满18点击进入在线看片| 国产精品第一第二| 国产午夜精品久久久| 久久免费精品视频| 奇米一区二区三区四区久久| 日日骚久久av| 欧美日韩成人免费| 欧美裸体视频网站| 97精品在线观看| 国模吧一区二区三区| 91精品国产自产在线观看永久| 亚洲欧洲在线播放| 精品一区二区电影| 另类视频在线观看| xxxxxxxxx欧美| 国内精品视频一区| 久99久在线视频| 欧美激情视频给我| 色多多国产成人永久免费网站| 日韩成人小视频| 不卡毛片在线看| 日韩国产在线播放| 日韩精品在线电影| 国产精品久久久久久搜索| 欧亚精品中文字幕| 亚洲精品久久久久久下一站| 成人激情视频在线播放| 成人黄色免费在线观看| 国产精品日韩在线播放| 91国内产香蕉| 亚洲电影免费在线观看| 91国内精品久久| 亚洲free性xxxx护士hd| 日韩视频在线免费观看| 欧美性受xxxx黑人猛交| 日韩精品久久久久久久玫瑰园| 久久精品视频在线播放| 国产精品美女呻吟| 国产成人亚洲精品| 中文字幕亚洲欧美日韩2019| 亚洲一区二区久久| 久久免费视频网| 欧美日韩999| 日韩精品中文字幕在线| 久久精品色欧美aⅴ一区二区| 日韩精品高清视频| 成人美女av在线直播| 国产精品极品美女在线观看免费| 丝袜一区二区三区| 亚洲精选一区二区| 欧美电影免费观看大全| 亚洲精品国产精品久久清纯直播| xxx一区二区| 久久精品国产2020观看福利| 一区二区三区四区视频| 亚洲精品狠狠操| 亚洲最大在线视频| 亚洲一区二区三区sesese| 国产亚洲欧洲高清| 久久影视电视剧凤归四时歌| 国产主播喷水一区二区| 97在线免费观看| 欧美猛男性生活免费| 久久精品91久久香蕉加勒比| 国产日韩欧美视频在线| 日韩欧美亚洲一二三区| 欧美日韩国产第一页| 欧美一级bbbbb性bbbb喷潮片| 亚洲欧美视频在线| 日本精品久久中文字幕佐佐木| 国产精品久久久久久av福利软件| 欧美精品一本久久男人的天堂| 亚洲精品ady| 日韩av一区二区在线观看| 成人午夜两性视频| 午夜精品久久久久久久白皮肤| 成人免费看片视频| 91在线观看免费网站| 91禁外国网站| 久久久久久久久久久久久久久久久久av| 欧美色视频日本版| 狠狠久久亚洲欧美专区| 日韩第一页在线| 欧美日韩中文字幕日韩欧美| 国产日韩在线观看av| 亚洲第一综合天堂另类专| 久久久久中文字幕2018| 国模精品视频一区二区三区| 亚洲精品乱码久久久久久金桔影视| 欧美激情欧美狂野欧美精品| 亚洲xxx自由成熟| 啪一啪鲁一鲁2019在线视频| 欧美午夜激情视频| 国产日韩av高清| 成人精品久久一区二区三区| 日韩欧美在线国产| 成人性生交大片免费看视频直播| 欧美激情视频给我| 中文字幕亚洲欧美日韩在线不卡| 中文字幕日本欧美| 亚洲欧洲自拍偷拍| 日韩美女视频免费在线观看| 国产成人亚洲综合| 欧美日韩在线视频一区| 日韩激情视频在线播放|