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

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

?? 萬能.cpp

?? 萬能排序:主要是內部排序其中包括簡單選擇
?? CPP
字號:
#include <stdio.h> 
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include <conio.h>
#define MAXSIZE 100
typedef int RedType;
typedef struct SqList
{
       RedType INT[MAXSIZE+1];
       int length;      
}SqList; 
SqList L;
void TIME()                                      //獲得系統時間
{
    static char *week[]={"一","二","三","四","五","六","日"};
    time_t t;
    struct tm *tp;
    t=time(NULL);
    tp=localtime(&t);
    printf("\t        ─────────────────────\n");
    printf("\t\t    現在是:%d年%d月%d日",tp->tm_year+1900,tp->tm_mon+1,tp->tm_mday);   
    printf(" %d:%d:%d ",tp->tm_hour,tp->tm_min,tp->tm_sec,tp->tm_wday); 
    printf("星期%s\n",week[(tp->tm_wday)-1]);
}
void PRINT(SqList *L)                             //打印排序結果
{
    int i;
    printf("\t\t");
    for(i=1;i<=L->length;i++)
           printf("%d ",L->INT[i]);
    printf("\n");
}
void STINSORT(SqList *L)                         //直接插入排序
{
    int i,j;
    for(i=2;i<=L->length;i++)                    //依次插入INT[2],…,INT[n]
    {
        L->INT[0]=L->INT[i];                     //以INT[0]為哨兵
        j=i-1;
        while(L->INT[j]>L->INT[0])
        {
            L->INT[j+1]=L->INT[j];
            j--;
        }
        L->INT[j+1]=L->INT[0];
    }
}
void BIS_INT(SqList *L)                          //折半插入排序
{  
    int i,j,low,high,mid;
    for(i=2;i<=L->length;++i)
       if(L->INT[i]<L->INT[i-1])
       {
           L->INT[0] = L->INT[i];
           high=i-1;                             //認為在r[1]和r[i-1]之間已經有序
           low=1;
           while(low<=high)                      //對有序表進行折半查找
           {
               mid=(low+high)/2;
               if(L->INT[0]<L->INT[mid])
                   high=mid-1;
               else
                   low=mid+1;
           }
           for(j=i-1;j>=high+1;--j)
               L->INT[j+1]=L->INT[j];
           L->INT[high+1]=L->INT[0];
       }
}
void SHELL(SqList *L)                            //希爾排序
{
    int i,j,d;
    d=L->length/2;                               //d為增量
    while(d>=1)                                  //最后一次的增量一定為1
    {
        for(i=d+1;i<=L->length;i++)
        {
            L->INT[0]=L->INT[i];
            j=i-d;
            while(L->INT[j]>L->INT[0]&&j>0)
            {
                L->INT[j+d]=L->INT[j];
                j=j-d;
            }
            L->INT[j+d]=L->INT[0];
        }
        d=d/2;
    }
}
void QUICK(SqList *L,int low,int high)           //快速排序
{
    int i,j,temp;
    i=low;
    j=high;
    temp=L->INT[low];                            //以INT[0]為基準
    while(i<j)                                   //從兩端往中間進行掃描直到i=j為止
    {
        while(i<j&&temp<=L->INT[j])              //右端進行掃描
            j--;
        if(i<j)
        {
            L->INT[i]=L->INT[j];
            i++;
        }
        while(i<j&&L->INT[i]<=temp)              //左端進行掃描
            i++;    
        if(i<j)
        {
            L->INT[j]=L->INT[i];
            j--;
        }
    }
    L->INT[i]=temp;
    if(low<i)
        QUICK(L,low,i-1);                        //對左區間進行排序
    if(i<high)
        QUICK(L,j+1,high);                       //對右區間進行排序
}
void SELECT(SqList *L)                           //選擇排序
{
    int i,j,small;
    for(i=1;i<=L->length-1;i++)                  //做第i趟排序(1≤i≤length-1)
    {
        small=i;                                 //保存小址
        for(j=i+1;j<=L->length;j++)              //在當前無序區INT[i..length]中選最小的記錄INT[small]
        {
            if(L->INT[j]<L->INT[small]) 
                small=j;                         //small記下目前找到的最小關鍵字所在的位置
        }
        if(small!=i)                             //交換值
        {L->INT[0]=L->INT[i];L->INT[i]=L->INT[small];L->INT[small]=L->INT[0];}
    }
}
void BUBBLE(SqList *L)                           //冒泡優化排序
{
    int i,j,flag=1;                              //i為掃描次數,flag標記為是否交換
    for(i=0;i<=L->length-1&&flag==1;i++)
    {
        flag=0;
        for(j=0;j<L->length-i;j++)
        {
            if(L->INT[j]>L->INT[j+1])
            {
                flag=1;
                L->INT[0]=L->INT[j];
                L->INT[j]=L->INT[j+1];
                L->INT[j+1]=L->INT[0];
            }
        }
    }
}
void BUILDHEAP(SqList *L,int k,int m)            //建立堆
{
    int i,x;
    x=L->INT[k];
    for(i=2*k;i<=m;i=i*2)
    {
        if(i<m&&L->INT[i]<L->INT[i+1])
            i++;
        if(x>L->INT[i]) break;                   //x應插入在位置k上
        L->INT[k]=L->INT[i];
        k=i;
    }
    L->INT[k]=x;                                 //插入
}
void HEAPSORT(SqList *L)                         //堆排序
{
    int i,n,temp;
    n=L->length;
    for(i=n/2;i>0;i--)
        BUILDHEAP(L,i,n);
    for(i=n;i>1;i--)
    {
        temp=L->INT[1];
        L->INT[1]=L->INT[i]; 
        L->INT[i]=temp;   
        BUILDHEAP(L,1,i-1);                      //將INT[1..n-1] 重新調整為大頂堆
    }
}
void RAND(SqList *L)                             //隨機生成數字
{
    int i;
    L->length=(rand()%(14))+2;                   //長度<=15,數值>=2的隨機數
    for(i=0;i<L->length;i++)
    {
        //rand((unsigned)time(NULL));            //長度為65535以內的隨機數
        L->INT[i]=(rand()%(100))+1;              //為0-100的隨機數   
    }
}
void INIT(SqList *L)                             //初始化排序的數據
{
    int i;
    char c;
loop:;
    TIME();
    printf("\t        ─────────────────────\n");
    printf("\n\t\t\t請輸入待排序數據的數量【>=2】: ");
    while (scanf("%d", &L->length)!=1)           //檢測是否為正確輸入數
    {
        while ((c=getchar())!='\n');
        printf("\n\t\t【×】Error:錯誤的輸入,請按任意鍵重新輸入→\n\t\t\t\t");
        getch();
        system("cls");
        goto loop;
    }
    if(L->length<2||L->length>MAXSIZE)
    {
        printf("\n\t\t\t\t 【×】Error:\n\t\t待排序數據數目小于2或超出最大輸入量,請按任意鍵重新輸入→\n\t\t\t\t");
        getch();
        system("cls");
        goto loop;
    }
    printf("\n");
    for(i=1;i<=L->length;i++)
    {

      printf("\t\t\t    請輸入第%d個數據: ",i);
lable:;        
      while (scanf("%d",&L->INT[i])!=1)          //檢測是否為正確輸入數
      {
          while ((c=getchar())!='\n');
          printf("\n【×】Error:數據輸入出錯,請重新輸入→");
          goto lable;
      }
    }
    printf("\n\n\n\n\t\t\t數據初始化成功,按任意鍵繼續→\n");
    getch();
    system("cls");
}
void PRIN()                                      //格式化輸出─
{
    int i;
    printf("\t\t");
    for(i=0;i<L.length;i++)
        printf("──");
    printf("\n");
}
int MENUE()
{
    int input_data;
    char c;
    TIME();
    printf("\t      ╭─────────────────────╮\n");
    printf("\t       |          各種排序的基本操作實現          |\n");
    printf("\t      |─────────────────────|\n");
    printf("\t       |          1、手動(Hand)輸入數據           |\n");
    printf("\t      |─────────────────────|\n");
    printf("\t       |          2、隨機(Rand)生成數據           |\n");
    printf("\t      |─────────────────────|\n");
    printf("\t       |          3、退         出  ...           |\n");
    printf("\t       ╰─────────────────────╯\n");
    printf("\t                        請正確選擇:");
    while(scanf("%d", &input_data)!=1)                  //檢測是否為正確輸入數
    {
        while ((c=getchar())!='\n');
        return input_data;
    }
    fflush(stdin);
    return input_data;
}
void SUB_MENUE()
{
    char c;
    for(;;){
    TIME();
    printf("\t      ╭─────────────────────╮\n");
    printf("\t       |          各種排序的基本操作實現          |\n");
    printf("\t      |─────────────────────|\n");
    printf("\t       |          1、重新(Again)輸入數據          |\n");
    printf("\t       |          2、折半(Binary)排序             |\n");
    printf("\t       |          3、直接(Straight)排序           |\n");
    printf("\t       |          4、希爾(Shell)排序              |\n");
    printf("\t       |          5、快速(Quick)排序              |\n");
    printf("\t       |          6、選擇(Select)排序             |\n");
    printf("\t       |          7、冒泡(Bubble)排序             |\n");
    printf("\t       |          8、堆  (Heap)排序               |\n");
    printf("\t       |          9、隨機(Rand)生成               |\n");
    printf("\t       |          Q、退     出  ...               |\n");
    printf("\t       ╰─────────────────────╯\n");
    printf("\t        【共%d個數據】如下:\n",L.length);
    PRIN();
    PRINT(&L);
    PRIN();
    printf("\t                        請選擇:");
    scanf("%s",&c);
    switch(c)
    {
        case '1':
            system("cls");
            INIT(&L);
            system("cls");
            break;
        case '2':
            BIS_INT(&L);
            printf("\n\t\t\t         排序成功!!!\n\t\t\t    ");
            system("pause");
            system("cls");
            break;
        case '3':
            STINSORT(&L);
            printf("\n\t\t\t         排序成功!!!\n\t\t\t    ");
            system("pause");
            system("cls");
            break;
        case '4':
            SHELL(&L);
            printf("\n\t\t\t          排序成功!\n\t\t\t     ");
            system("pause");
            system("cls");
            break;
        case '5':
            QUICK(&L,1,L.length);
            printf("\n\t\t\t          排序成功!\n\t\t\t     ");
            system("pause");
            system("cls");
            break;
        case '6':
            SELECT(&L);
            printf("\n\t\t\t          排序成功!\n\t\t\t     ");
            system("pause");
            system("cls");
            break;
        case '7':
            BUBBLE(&L);
            printf("\n\t\t\t          排序成功!\n\t\t\t    ");
            system("pause");
            system("cls");
            break;
        case '8':
            HEAPSORT(&L);
            printf("\n\t\t\t           排序成功!\n\t\t\t    ");
            system("pause");
            system("cls");
            break;
        case '9':
            RAND(&L);
            printf("\n\t\t\t         隨機生成成功!\n\t\t\t   ");
            system("pause");
            system("cls");
            break;
        case 'q':
        case 'Q':
            system("cls");
            printf("\n\n\n\n\t\t\t   謝 謝 使 用 , 再 見!!!\n");
            printf("\n\t\t\t     任 意 鍵 退 出!\n\t\t\t");
            getch();
            exit(0);
            break;
        default :
            printf("\n\t\t\t\t 【×】Error:\n\t\t\t  輸入有誤,請重新選擇!!!\n");
            getch();
            system("cls");
            break;
    }
    }
}
int main(void)
{    
    int input_data;
    //kbhit();
    //puts("輸入任意字符繼續:"); 
    //while (!kbhit()) /* do nothing */ ; 
    //puts("\r\n你按下了一個鍵!\r\n");
    do
    {
        input_data=MENUE();
        switch(input_data)
        {
        case 1:
            system("cls");
            INIT(&L);
            SUB_MENUE();  
            break;
        case 2:
            system("cls");
            RAND(&L);
            SUB_MENUE();  
            break;
        case 3:
            system("cls");
            printf("\n\n\n\n\t\t\t   謝 謝 使 用 , 再 見!!!\n");
            printf("\n\t\t\t     任 意 鍵 退 出!\n\t\t\t");
            getch();
            exit(0);
            break;
        default:
            printf("\n\t\t\t\t 【×】Error:\n\t\t\t  輸入有誤,請重新選擇!!!\n");
            getch();
            system("cls");
            break;
        }
    }while(input_data!=3); 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本大道久久a久久综合婷婷| 一本大道av伊人久久综合| 国产一区二区福利| 欧美日韩久久不卡| 欧美一卡二卡在线| 中文字幕在线不卡国产视频| 视频一区视频二区中文| 国产一区二区三区av电影| 欧美性色aⅴ视频一区日韩精品| www久久精品| 亚洲18色成人| a4yy欧美一区二区三区| 久久婷婷久久一区二区三区| 婷婷国产v国产偷v亚洲高清| 91在线视频免费观看| 久久久99免费| 久久国产三级精品| 欧美日免费三级在线| 亚洲日本免费电影| 国产成人av电影在线播放| 日韩欧美电影在线| 日韩电影在线观看网站| 欧美性受极品xxxx喷水| 亚洲综合色网站| 99久久精品国产一区二区三区| 久久亚洲综合色| 热久久国产精品| 91麻豆精品国产91久久久| 亚洲a一区二区| 欧美曰成人黄网| 亚洲视频在线一区二区| 激情亚洲综合在线| 欧美日韩久久不卡| 久久精品一二三| 午夜精品福利在线| 色婷婷亚洲精品| 日韩毛片在线免费观看| 免费成人在线视频观看| 欧美日本在线播放| 一区二区三区在线视频免费 | 久久九九久精品国产免费直播| 亚洲成在人线免费| 91香蕉视频mp4| 中文字幕在线观看一区二区| 国产一区视频网站| 精品1区2区在线观看| 丝袜亚洲精品中文字幕一区| 色婷婷狠狠综合| 一区二区三区四区蜜桃| 91网上在线视频| 亚洲精品国产精品乱码不99| 成人网在线免费视频| 亚洲国产成人自拍| 国产suv精品一区二区6| 国产免费成人在线视频| jizzjizzjizz欧美| 精品盗摄一区二区三区| 国产成人免费视频一区| 久久人人97超碰com| 国产精品综合久久| 国产精品无人区| 94-欧美-setu| 亚洲国产日韩a在线播放性色| 色94色欧美sute亚洲13| 亚洲精品视频免费观看| 欧美色图激情小说| 偷窥少妇高潮呻吟av久久免费| 91麻豆精品国产91久久久久 | 欧美www视频| 久久99久久精品| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区三区视频在线| 亚洲国产精品欧美一二99| 91成人网在线| 亚洲国产cao| 日韩欧美一级精品久久| 国内一区二区视频| 中文字幕欧美激情| 色爱区综合激月婷婷| 天堂资源在线中文精品| 欧美电影免费观看高清完整版在| 国产一区不卡在线| 中文字幕在线免费不卡| 欧美色图12p| 国产乱淫av一区二区三区| 成人免费一区二区三区在线观看 | 中文字幕中文字幕在线一区 | 欧美一区二区网站| 久久精品国产秦先生| 国产欧美日韩精品a在线观看| 日本高清不卡aⅴ免费网站| 亚洲一区二区三区小说| 制服丝袜日韩国产| 狠狠色狠狠色综合系列| 一区二区三区免费| 久久亚洲精品小早川怜子| 色综合 综合色| 国产一区二区精品久久99| 一区二区三区国产精华| 久久先锋影音av鲁色资源| 欧美中文字幕一二三区视频| 国内不卡的二区三区中文字幕| 亚洲自拍偷拍欧美| 国产日韩欧美不卡| 欧美电影免费观看高清完整版在线 | 激情五月婷婷综合网| 国产精品电影一区二区| 欧美精品在线一区二区| 91污片在线观看| 国产精品99久久久久久久女警| 视频一区在线播放| 亚洲丝袜美腿综合| 欧美三级视频在线观看| 一区二区三区在线视频免费| 国内精品久久久久影院一蜜桃| 91精品国产综合久久香蕉麻豆 | 99视频国产精品| 日本韩国一区二区三区| 91福利区一区二区三区| 精品国产乱码久久久久久牛牛| 久久九九影视网| 亚洲一区在线观看免费| 91精品免费观看| 精品欧美乱码久久久久久1区2区 | 亚洲黄色免费电影| 亚洲成人黄色影院| 麻豆成人av在线| 成人精品鲁一区一区二区| 日韩经典中文字幕一区| 国产福利一区在线| 欧美日韩第一区日日骚| 国产精品视频一二三区| 日本一区二区三区高清不卡| 亚洲少妇屁股交4| 韩国午夜理伦三级不卡影院| 欧美高清视频一二三区 | 六月丁香综合在线视频| 精品一区二区三区在线视频| 在线视频你懂得一区二区三区| 99久久精品免费看国产免费软件| 欧美精品久久天天躁| 色综合天天综合网天天狠天天| 91在线免费播放| 欧美午夜片在线观看| wwwwww.欧美系列| 日韩av不卡在线观看| 午夜视频在线观看一区二区| aa级大片欧美| 国产亚洲成aⅴ人片在线观看| 国产精品五月天| 久久久久88色偷偷免费| 2019国产精品| 国产99久久久国产精品潘金网站| 亚洲成人av一区二区三区| 婷婷中文字幕一区三区| 精品国产制服丝袜高跟| 经典一区二区三区| 国产精品美女视频| 在线观看av不卡| 色综合久久久久网| 蜜臀久久久99精品久久久久久| 亚洲精选免费视频| 国产一区999| 久久综合九色综合97_久久久| 裸体健美xxxx欧美裸体表演| 麻豆91精品91久久久的内涵| 国产大片一区二区| 久久久久国产精品麻豆ai换脸| 久久尤物电影视频在线观看| 日韩视频一区二区在线观看| 中文字幕欧美日韩一区| 精品国产不卡一区二区三区| 日本丶国产丶欧美色综合| 另类小说色综合网站| 喷白浆一区二区| 国产精品久久久久久久久久免费看| 亚洲成a人片在线观看中文| 欧美图片一区二区三区| 国产精品 日产精品 欧美精品| 午夜视频在线观看一区二区三区| 久久久综合视频| 白白色 亚洲乱淫| 欧美视频在线观看一区| 成人免费观看av| 国产精品伊人色| 北岛玲一区二区三区四区| 欧美探花视频资源| 欧美综合久久久| 久久亚洲私人国产精品va媚药| 精品国产网站在线观看| 青青草成人在线观看| 韩国v欧美v日本v亚洲v| 色狠狠色狠狠综合| 中文字幕一区二区三区乱码在线| 综合激情成人伊人| 99久久精品一区| 成人av网在线| 欧美成人一区二区三区| 午夜精品福利视频网站| 99麻豆久久久国产精品免费优播|