亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 三者取中算法排序.c

?? 三者取中的排序算法
?? C
字號:
/*
  Name: 排序算法 
  Copyright:LC 
  Author: 羅超 
  Date: 02-01-08 16:56
  Description: 輸入若干組長度各異的待排序列,分別用快速排序算法和改進的樞軸元素三
  者取中算法對待排序列進行排序,當待排子序列長度已小于 20時,改用直接插入排序,
  利用時間函數驗證三者取中算法在效率上的提高。(
  提示: 待排序列的長度一般應為 5000 以上)
*/

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define Max 100
#define Maxsize 10000000
typedef struct{
   long key;                              
   char data;                     
}Status;
typedef struct{
   Status r[Maxsize+1];               
   int length;                          
}SqList;//定義順序表為存儲結構 

SqList *CreatList(int );
SqList *Switch(SqList *,int ,int );

void Output(SqList * );//輸出函數 
void InsertSort(SqList * );//直接插入排序 
void QuickSort(SqList *,int ,int );//快排核心 
void TQuickSort(SqList *,int ,int );//快排計算時間 
void TThreeSort(SqList *,int ,int );//三者取中計算時間 
void ThreeSort(SqList *,int ,int );//三者取中核心 

main()
{
   int List[Max]={0};//定義一個數組,存儲輸入的數據項目 
   int length;
   int i,j;
   SqList *L;//存儲新建的數組 
   
   printf("輸入任意組數據的長度(不超過7位的數字),空格分割,以0結束輸入:\n");
   printf("控制位數\n");
   printf("1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567 1234567 \n");
   scanf("%d",&length);                        
   for(i=0;i<=Max-1&&length!=0;i++){
      List[i]=length;                        
      scanf("%d",&length);
   }//輸入數據 
   
   for(j=0;j<=Max-1&&List[j];j++){             
      L=CreatList(List[j]);//新建順序表                      
      if(List[j]<=20){                           
         printf("\n數據長度為%d,直接插入排序:\n",List[j]);
         InsertSort(L);                       
         Output(L);                             
      }//數字小于20 ,直接進行插入排序 
      else{//大于20 的時候,分別進行三者取中和快排                                   
         printf("\n數據長度為%d,快速排序排序 :\n",List[j]);
         TQuickSort(L,1,List[j]);                  
         Output(L);                          
         printf("\n三者取中排序:\n",List[j]);
         TThreeSort(L,1,List[j]);            
         printf("排序完成\n");
         Output(L);                            
      }                                     
   }                  
   system("pause");    

}


//創建順序表,并進行隨機賦值 
SqList *CreatList(int len){             
   int i;
   SqList *L;
   srand(time(NULL));
   if(!(L=(SqList*)malloc(sizeof(SqList))))
      return 0;
   L->length=len;                       
   for(i=1;i<=len;i++){
       L->r[i].key=1+(rand()%10000000);  //隨即賦值 
   }
   return L;
}

//輸出函數 
void Output(SqList *L)
{                  
   int i,choose;
   printf("由于數據過大,請選擇操作:\n1->打印所有值\n2->不打印 \n") ;
   scanf("%d",&choose);//讀入選擇 
   switch(choose){
   case 1:                               
      printf("打印所有值有:\n");
      for(i=1;i<=L->length;i++)
         printf("%d ",L->r[i].key);
      break;
   case 2:                    
      printf("不進行操作   \n");           
      break;
   default:                             
      printf("非法輸入,不進行操作");
      break;
   }
   printf("\n");
}

//直接插入排序 
void InsertSort(SqList *L)
{               
   int i,j;
   clock_t start,finish;   //調用時間函數 
   double duration;          //定義持續時間 
   start=clock();
   for(i=2;i<=L->length;++i)
      if(L->r[i].key<L->r[i-1].key){      
         L->r[0]=L->r[i];          //以r[0]為標志位 
         L->r[i]=L->r[i-1];
         for(j=i-2;L->r[0].key<L->r[j].key;--j)
            L->r[j+1]=L->r[j];            
         L->r[j+1]=L->r[0];       //插入到應在的位置 
      } 
   finish=clock();
   duration=(double)(finish-start)/CLOCKS_PER_SEC;
   printf("耗時%f秒\n",duration);      //輸出時間 
}

//快速排序核心 
void QuickSort(SqList *L,int low,int high)
{    
   int ploc;   
   int pkey;                         
   if(low<high){
         L->r[0]=L->r[low];          //r[0]作樞軸記錄 
         pkey=L->r[low].key;     //樞軸記錄關鍵字 
         while(low<high){            
               while(low<high&&L->r[high].key>=pkey)
                      --high;                    
                      L->r[low]=L->r[high];    //移動比樞軸元素小的 到前半部分 
         while(low<high&&L->r[low].key<=pkey)
                ++low;
         L->r[high]=L->r[low]; //移動比樞軸元素小的到后半部分 
                        }
      L->r[low]=L->r[0];       
      ploc=low;   //將原來的表分裂成為兩個 
      QuickSort(L,low,ploc-1);  
      QuickSort(L,ploc+1,high); //分別對前后兩個部分進行快速排序    
   }    
}

//快速排序調用時間外殼 
void TQuickSort(SqList *L,int low,int high)
{
   clock_t start,finish;     //時間函數 
   double duration;             //持續時間 

   start=clock();  
   QuickSort(L,low,high);           //快速排序   
   finish=clock();
   
   duration=(double)(finish-start)/CLOCKS_PER_SEC;
   printf("耗時%f秒\n",duration);//輸出計算時間 
}


//三者取中排序核心 
void ThreeSort(SqList *L,int low,int high)
{
   int ploc; 
   int pkey;                           
   if(low<high){
                L=Switch(L,low,high
                );      //選擇樞軸所在 
   L->r[0]=L->r[low];           //r[0]作樞軸記錄 
   pkey=L->r[low].key;     //樞軸記錄關鍵字
    while(low<high){
         while(low<high&&L->r[high].key>=pkey)
               --high;
         L->r[low]=L->r[high];  //移動比樞軸元素小的 到前半部分 
         while(low<high&&L->r[low].key<=pkey)
               ++low;
         L->r[high]=L->r[low]; //移動比樞軸元素小的到后半部分 
     }
    L->r[low]=L->r[0];  
    ploc=low;  //將原來的表分裂成為兩個 部分 
    ThreeSort(L,low,ploc-1);  
    ThreeSort(L,ploc+1,high);   //分別對前后兩個部分進行快速排序     
   }    
}

//三者取中排序時間函數外殼 
void TThreeSort(SqList *L,int low,int high)
{
   clock_t start,finish;       //時間函數 
   double duration;       //持續時間 

   start=clock();  
   ThreeSort(L,low,high);      //三者取中法  
   finish=clock();
   
   duration=(double)(finish-start)/CLOCKS_PER_SEC;
   printf("耗時%f秒\n",duration);//輸出計算時間 
}


//進行樞軸比較交換 
SqList *Switch(SqList *L,int low,int high)
{
   int hold; //暫存記錄 
   if((L->r[low].key>=L->r[(low+high)/2].key&&L->r[(low+high)/2].key>=L->r[high].key)||(L->r[low].key<=L->r[(low+high)/2].key&&L->r[(low+high)/2].key<=L->r[high].key)){
      hold=L->r[low].key;  
      L->r[low].key=L->r[(low+high)/2].key;//樞軸調換 ,換最小 
      L->r[(low+high)/2].key=hold;
      return L; 
   }
   else if((L->r[(low+high)/2].key>=L->r[low].key&&L->r[low].key>=L->r[high].key)||(L->r[(low+high)/2].key<=L->r[low].key&&L->r[low].key<=L->r[high].key)){
      return L;          //樞軸不變 
   }
   else if((L->r[(low+high)/2].key>=L->r[high].key&&L->r[high].key>=L->r[low].key)||(L->r[(low+high)/2].key<=L->r[high].key&&L->r[high].key<=L->r[low].key)){
      hold=L->r[low].key;    
      L->r[low].key=L->r[high].key;   //樞軸調換 ,換最大 
      L->r[high].key=hold;
      return L; 
   }
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 亚洲r级在线视频| 欧洲精品在线观看| 亚洲一区二区三区四区五区中文| 欧美亚洲国产bt| 天堂午夜影视日韩欧美一区二区| 欧美不卡一区二区| 国产69精品久久777的优势| 亚洲视频一区在线| 欧美另类久久久品| 国产精品一二三| 亚洲免费观看高清在线观看| 欧美日本高清视频在线观看| 久久国产免费看| 日韩一区欧美小说| 91精品欧美久久久久久动漫| 国内外成人在线| 中文字幕一区二区三区不卡在线 | 中文字幕成人av| 99久久精品一区二区| 日韩影院精彩在线| 一区二区日韩av| 久久爱另类一区二区小说| 欧美午夜视频网站| 精品美女一区二区三区| 亚洲色图在线视频| 狠狠色综合日日| 91麻豆精品国产91久久久久久| 久久日韩粉嫩一区二区三区 | 亚洲国产精品精华液ab| 久久99国产精品免费网站| 欧美精品一区二区三区久久久| 国产成人在线影院| 亚洲一区在线观看免费 | 精品福利一二区| 色天天综合色天天久久| 美女脱光内衣内裤视频久久网站| 国产精品久久久久影院老司| 欧美日本在线视频| 91丨九色丨蝌蚪富婆spa| 免费人成在线不卡| 一区二区三区中文字幕| 久久先锋影音av| 91精品国产欧美一区二区成人| 成人综合婷婷国产精品久久 | 激情综合网激情| 亚洲与欧洲av电影| 国产精品卡一卡二卡三| 337p粉嫩大胆噜噜噜噜噜91av| 欧美午夜片在线观看| 91在线精品一区二区| 久久国产精品第一页| 视频一区免费在线观看| 亚洲精品伦理在线| 国产精品久久久久久久蜜臀| 精品国产区一区| 欧美一区二区三区视频免费 | 成人网在线免费视频| 久久成人综合网| 欧美熟乱第一页| 激情综合网天天干| 天天影视色香欲综合网老头| 在线不卡a资源高清| 国产永久精品大片wwwapp| 国产欧美一区二区三区在线看蜜臀 | 午夜精品福利一区二区蜜股av| 国产亚洲欧美日韩日本| 欧美三级韩国三级日本三斤| 99久久99久久久精品齐齐| 成人精品一区二区三区四区 | 日本成人在线电影网| 亚洲综合无码一区二区| 综合久久国产九一剧情麻豆| 国产精品免费观看视频| 国产欧美一区二区精品忘忧草 | 久久久精品免费免费| 欧美成人激情免费网| 91精品综合久久久久久| 日韩一级欧美一级| 欧美成人精品3d动漫h| 亚洲精品一区在线观看| 久久先锋资源网| 国产精品乱码一区二区三区软件| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美tickling网站挠脚心| 久久夜色精品一区| 亚洲国产精品精华液ab| 综合中文字幕亚洲| 亚洲一区二区三区四区在线 | 久久99精品久久久久久动态图 | 久久久久国产精品麻豆ai换脸| 9191久久久久久久久久久| 日韩女优视频免费观看| 日韩欧美电影一区| 精品国免费一区二区三区| 欧美麻豆精品久久久久久| av电影在线观看完整版一区二区| 国产成人av自拍| 不卡免费追剧大全电视剧网站| 国产精品一区一区三区| 国产乱人伦偷精品视频免下载| 国模娜娜一区二区三区| av在线这里只有精品| 韩国视频一区二区| 免费在线观看精品| 国产精品99精品久久免费| 成人国产一区二区三区精品| 91久久精品一区二区二区| 欧美一区二区三区视频免费播放| 久久久精品国产99久久精品芒果| 亚洲色图制服诱惑| 蜜桃av一区二区在线观看| 国产精品一二三四五| 欧美色图第一页| 国产婷婷色一区二区三区四区| 亚洲美女区一区| 久久精品国产久精国产| aaa亚洲精品一二三区| 欧美美女一区二区在线观看| 国产三区在线成人av| 亚洲va天堂va国产va久| 风间由美一区二区三区在线观看 | 色94色欧美sute亚洲线路一ni| 91麻豆精品国产91久久久更新时间| 久久精品无码一区二区三区| 亚洲免费观看高清完整版在线| 美女视频一区在线观看| 一本大道久久a久久综合| 欧美mv日韩mv国产| 亚洲一区二区三区免费视频| 国产综合成人久久大片91| 欧美日韩一区 二区 三区 久久精品| 久久精品人人做人人综合| 日韩精品1区2区3区| 91丝袜美腿高跟国产极品老师| 欧美精品一区二区三区在线| 亚洲午夜电影在线观看| 99国产精品视频免费观看| 精品影视av免费| 欧美日韩一区不卡| 成人高清视频免费观看| 2024国产精品视频| 另类小说欧美激情| 欧美不卡一区二区| 伦理电影国产精品| 日韩西西人体444www| 日本网站在线观看一区二区三区| 91激情五月电影| 香蕉久久一区二区不卡无毒影院| 91啪亚洲精品| 国产曰批免费观看久久久| 国产乱子伦视频一区二区三区 | 男人的j进女人的j一区| 在线一区二区三区四区五区| 亚洲国产高清在线| 东方aⅴ免费观看久久av| 亚洲精品一区二区在线观看| 另类的小说在线视频另类成人小视频在线 | 怡红院av一区二区三区| thepron国产精品| 国产精品久99| 99久久国产综合精品女不卡| 国产精品色哟哟网站| www.av精品| 亚洲精品国产a久久久久久| 91美女在线观看| 亚洲精品久久久蜜桃| 99在线视频精品| 亚洲免费观看高清完整版在线观看 | 99精品欧美一区| 亚洲乱码国产乱码精品精98午夜| 99精品视频中文字幕| 亚洲精品国产第一综合99久久| 欧美性受xxxx黑人xyx| a级精品国产片在线观看| 亚洲天天做日日做天天谢日日欢 | 韩国av一区二区三区在线观看| 欧美大白屁股肥臀xxxxxx| 欧美一区二区二区| 波多野结衣的一区二区三区| 成人激情小说网站| 成人av在线网站| 久久9热精品视频| 日韩电影一二三区| 亚洲午夜免费电影| 亚洲日本欧美天堂| 国产午夜亚洲精品理论片色戒| 91精品久久久久久久久99蜜臂| 不卡的av电影| 国产福利一区二区三区| 狠狠狠色丁香婷婷综合激情| 国产精品综合网| 欧美日韩一区二区在线观看| 国产婷婷一区二区| 91香蕉视频污| 天堂成人免费av电影一区| 久久久久久毛片| 91久久一区二区| 久久超碰97中文字幕|