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

C語(yǔ)言中使用快速排序算法對(duì)元素排序的實(shí)例詳解

 更新時(shí)間:2016年04月09日 15:58:25   作者:cqnuztq  
這篇文章主要介紹了C語(yǔ)言中使用快速排序算法對(duì)元素排序的實(shí)例詳解,文中細(xì)分了幾個(gè)情況來(lái)舉例,在注釋里有說(shuō)明,需要的朋友可以參考下

調(diào)用C語(yǔ)言的快速排序算法qsort();

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define SIZE 100

//從小到大排序
int comp1(const void *x,const void *y)
{
    return *(int *)x - *(int *)y;
}

//從大到小排序
int comp2(const void *x,const void *y)
{
    return *(int *)y - *(int *)x;
}


void main()
{
     int arr[SIZE];
     int n = 0; //數(shù)組的有效長(zhǎng)度
     int t = 0;
     int i;
     printf("input the arr(Q to quit).\n");
     while( (t = scanf("%d",&arr[n])) != 0)
    {
        n++;
    }
    printf("arr before qsort.\n");
    for(i = 0; i < n; i++)
    { 
        printf("arr[%d]=%d\t",i,arr[i]);
        if((i+1) % 5 == 0)
        {
            printf("\n");
        }
    }
   qsort(arr,n,sizeof(int),comp1);
   printf("\narr after qsort.\n");
   for(i = 0; i < n; i++)
   {
       printf("arr[%d]=%d\t",i,arr[i]);
       if((i+1) % 5 == 0)
       {
            printf("\n");
       }
    }
    qsort(arr,n,sizeof(int),comp2);
    printf("\nRecover All.\n");
   for(i = 0; i < n; i++)
   { 
       printf("arr[%d]=%d\t",i,arr[i]);
       if((i+1) % 5 == 0)
       {
           printf("\n");
       }
    }

printf("\n");
}

201649155422745.jpg (626×252)

只帶兩個(gè)參數(shù)的快速排序:

編寫(xiě)快速排序,函數(shù)qsort(),函數(shù)只帶兩個(gè)參數(shù)

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define LEN 10

typedef int dataType;

//初始化數(shù)組,數(shù)組元素為小于100的整數(shù)
void intiArr(dataType A[], int len);
//打印數(shù)組元素
void print(dataType A[], int len);
//帶兩個(gè)參數(shù)的快排
void qsort(dataType A[], int len);
int main()
{

 dataType data[LEN];
 intiArr(data,LEN);
 printf("排序前數(shù)組元素:");
 print(data,LEN);
 qsort(data,LEN);
 printf("排序后數(shù)組元素:");
 print(data,LEN);
 return 0;
}

初始化數(shù)組,數(shù)組元素為小于100的整數(shù)

void intiArr(dataType A[], int len)
{
 int i;
 srand((unsigned)time(NULL));
 for(i = 0; i < len; i++)
 {
 A[i] = rand() % 100;
 }
}

打印數(shù)組元素

void print(dataType A[], int len)
{
 int i;
 for(i = 0; i < len; i++)
 {
 if(i % 5 == 0)
  printf("\n");
 printf("%d\t",A[i]);
 }
 printf("\n");
}

帶兩個(gè)參數(shù)的快排

void qsort(dataType A[], int len)
{
 dataType *p = A;
 dataType *q = A + len - 1;
 dataType temp = *p;;
 if(len <= 0)
 {
 return ;
 }
 while(p < q)
 {
 while((p < q) && (*q >= temp))
 {
  q--;
 }
 *p = *q;
 while((p < q) && (*p <= temp))
 {
  p++;
 }
 *q = *p;
 }
 *p = temp;
 qsort(A,p - A);
 qsort(p + 1,len - (p - A) - 1);
}

201649155528232.jpg (396×161)

相關(guān)文章

  • FFRPC應(yīng)用 Client/Server使用及原理解析

    FFRPC應(yīng)用 Client/Server使用及原理解析

    這篇文章主要介紹了FFRPC應(yīng)用 Client/Server使用及原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • C++中vector迭代器失效問(wèn)題的原因及解決方案

    C++中vector迭代器失效問(wèn)題的原因及解決方案

    迭代器(iterator)是一種用于遍歷數(shù)據(jù)集合的的對(duì)象,它提供了一種訪問(wèn)數(shù)據(jù)集合中元素的方式,而無(wú)需暴露數(shù)據(jù)集合內(nèi)部的細(xì)節(jié),使用迭代器,我們可以對(duì)數(shù)據(jù)集合中的每個(gè)元素進(jìn)行處理,本文介紹了C++中關(guān)于vector迭代器失效問(wèn)題的原因及解決方案,需要的朋友可以參考下
    2024-09-09
  • Qt編寫(xiě)秒表功能

    Qt編寫(xiě)秒表功能

    這篇文章主要為大家詳細(xì)介紹了Qt編寫(xiě)秒表功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++實(shí)現(xiàn)廣度優(yōu)先遍歷圖

    C++實(shí)現(xiàn)廣度優(yōu)先遍歷圖

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)廣度優(yōu)先遍歷圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 通俗易懂的C語(yǔ)言快速排序和歸并排序的時(shí)間復(fù)雜度分析

    通俗易懂的C語(yǔ)言快速排序和歸并排序的時(shí)間復(fù)雜度分析

    這篇文章主要為大家通俗易懂的講解了C語(yǔ)言快速排序和歸并排序的時(shí)間復(fù)雜度分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • C++11中跳轉(zhuǎn)initializer_list實(shí)現(xiàn)分析

    C++11中跳轉(zhuǎn)initializer_list實(shí)現(xiàn)分析

    這篇文章主要介紹了C++11中跳轉(zhuǎn)initializer_list實(shí)現(xiàn)分析,實(shí)例分析initializer_list<T>初體驗(yàn),結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • C語(yǔ)言中的文件讀寫(xiě)fseek 函數(shù)

    C語(yǔ)言中的文件讀寫(xiě)fseek 函數(shù)

    這篇文章主要介紹是我是C語(yǔ)言中的文件讀寫(xiě)fseek 函數(shù)的相關(guān)資料,fseek 函數(shù)用來(lái)移動(dòng)文件流的讀寫(xiě)位置;就好比播放器,可以直接拖拽到精彩的時(shí)間點(diǎn)一樣,下面我們就來(lái)詳細(xì)介紹該內(nèi)容吧,感興趣的小伙伴可以參考一下
    2021-10-10
  • C++鏈表節(jié)點(diǎn)的添加和刪除介紹

    C++鏈表節(jié)點(diǎn)的添加和刪除介紹

    大家好,本篇文章主要講的是C++鏈表節(jié)點(diǎn)的添加和刪除介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C++程序簡(jiǎn)單示例

    C++程序簡(jiǎn)單示例

    這篇文章主要給大家分享的是C++程序簡(jiǎn)單示例,下面文章將圍繞C++程序的相關(guān)資料展開(kāi)內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • C++中inline函數(shù)詳解

    C++中inline函數(shù)詳解

    inline函數(shù)的定義:在函數(shù)聲明或定義中函數(shù)返回類(lèi)型前加上關(guān)鍵字inline,即可以把函數(shù)指定為內(nèi)聯(lián)函數(shù)。inline函數(shù)對(duì)編譯器而言必須是可見(jiàn)的,以便它能夠在調(diào)用點(diǎn)展開(kāi)該函數(shù)。
    2015-07-07

最新評(píng)論

阜新市| 宁陕县| 教育| 江口县| 沙坪坝区| 通山县| 武威市| 霸州市| 南汇区| 周宁县| 安化县| 沙坪坝区| 双江| 视频| 皮山县| 鹤庆县| 兴文县| 周口市| 呼玛县| 新乐市| 临夏市| 改则县| 克拉玛依市| 汉源县| 武鸣县| 平阳县| 木里| 宜君县| 保康县| 北宁市| 八宿县| 萍乡市| 西吉县| 铜陵市| 东丽区| 巫溪县| 敦化市| 巧家县| 绥滨县| 惠东县| 巩留县|