久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

快速排序與二分查找程序

作者:劉蕊飛   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年03月02日   【字體:

快排和二分查找的原理就不說了,網(wǎng)上一搜一大堆,這里主要是自己編寫的快排、二分與系統(tǒng)自帶的快排、二分代碼,一般面試都會出冒泡,所以冒泡是才是最重要的。系統(tǒng)自帶的快排函數(shù)在編寫代碼的時候用著挺方便的,代碼如下:

 

// 快速排序

 

#include <stdio.h>

 

void q_sort(int arr[],int low,int high);

 

int main()

 

{

 

       intarr[10] = {0};

 

       inti = 0;

 

 

 

       printf("輸入 10 個整數(shù):\n");

 

       for(i= 0;i < 10;i++)

 

              scanf("%d",&arr[i]);

 

       q_sort(arr,0,9);

 

       for(i= 0;i < 10;i++)

 

              printf("%d",arr[i]);

 

       printf("\n");

 

 

 

       return0;

 

}

 

void q_sort(int arr[],int low,int high)

 

{

 

       inti = 0,j = 0; //i- j-

 

       intbase = 0;           // 基數(shù)

 

       inttemp = 0;

 

 

 

       if(low>= high)             // 遞歸終止

 

              return;

 

       i= low;

 

       j= high;

 

       base= arr[low];

 

       while(i< j){

 

              while(arr[j]> base)// ->

 

                     j--;

 

              temp= arr[j];

 

              arr[j]= arr[i];

 

              arr[i]= temp;

 

              while(arr[i]< base)// ->

 

                     i++;

 

              temp= arr[j];

 

              arr[j]= arr[i];

 

              arr[i]= temp;

 

              if(i<j&& arr[i]==arr[j])

 

                     j--;

 

       }    

 

       q_sort(arr,low,i-1);

 

       q_sort(arr,i+1,high);

 

}

 

 

 

/***************************************

 

auth:肖喬

 

func:二分查找

 

***************************************/

 

#include<stdio.h>

 

#define N 5

 

 

 

int main(){

 

       inti,j,a[N],t;

 

       inthig,low,mid,k;

 

 

 

       printf("請輸入%d個整數(shù):",N);

 

       for(j=0;j<=N-1;j++){

 

              scanf("%d",&a[j]);

 

       }

 

 

 

       for(i=0;i<N-1;i++)

 

              for(j=0;j<N-1-i;j++)

 

                     if(a[j]>a[j+1]){

 

                            t=a[j];a[j]=a[j+1];a[j+1]=t;

 

                     }

 

 

 

       printf("從小到大排列:");

 

       for(j=0;j<=N-1;j++)

 

              printf("%d",a[j]);

 

       printf("\n");

 

#if 1

 

       printf("請輸入要查找的數(shù):");

 

       scanf("%d",&k);

 

       low=0;hig=N-1;

 

       while(low<=hig){

 

              mid=(low+hig)/2;

 

              if(a[mid]==k){

 

                     printf("%d在數(shù)組中第%d\n",a[mid],mid+1);

 

                     break;

 

                     }

 

              elseif(a[mid]<k)

 

                     low=mid+1;

 

              else        

 

                     hig=mid-1;

 

       }

 

#endif

 

       return0;

 

}

 

 

 

下面是系統(tǒng)自帶快排和二分查找的函數(shù)。qsortbsearch兩個函數(shù)可以配合起來用,先排序,在查找,也可以分開使用。qsort在比較兩個數(shù)大小的時候返回3個值,1-10,改變1-1的位置,就可以實現(xiàn)從大到小和從小到大排序。

 

 

 

qsort

 

功能:對數(shù)組basenmemb塊大小為size字節(jié)的數(shù)組快速排序。

 

參數(shù):base 開始地址,nmenmb 數(shù)據(jù)塊數(shù) size 地址大小 compare 根據(jù)此指針指向的函數(shù)的返回結(jié)果來排序(0,正數(shù)和負(fù)數(shù))

 

返回值:無

 

 

 

bsearch

 

功能:從地址base 開始空間的nmenmb塊大小為size字節(jié)的數(shù)據(jù)中,二分查找key指針保存地址空間中的內(nèi)容

 

參數(shù):key查找內(nèi)容的首地址base開始地址nmenmb

 

 

 

//qsort 函數(shù)的使用

 

//bseach函數(shù)使用

 

#include<stdio.h>

 

#include<stdlib.h>

 

int c_desc(const void *px,const void *py);

 

//int c_asc(const void *px,const void *py);

 

 

 

int main(){

 

       intarr[10]={0};

 

       inti=0,j=0,data=0;

 

       int*p=&j;

 

       printf("輸入十個數(shù):");

 

       for(i=0;i<10;i++)

 

              scanf("%d",&arr[i]);

 

       printf("輸入查找的數(shù):");

 

       scanf("%d",&data);

 

       printf("升序排列:\n");

 

       qsort(arr,10,sizeof(int),c_desc);

 

       for(i=0;i<10;i++)

 

              printf("%d",arr[i]);

 

       printf("\n");

 

//     printf("降序排列:\n");

 

//     qsort(arr,10,sizeof(int),c_asc);

 

//     for(i=0;i<10;i++)

 

//            printf("%d",arr[i]);

 

       p=bsearch(&data,arr,10,sizeof(int),c_desc);

 

       if(p==NULL)

 

              printf("不存在");

 

       else{

 

              printf("存在\n");

 

              printf("%d在第%d個位置",data,p-arr+1);

 

       }

 

 

 

 

 

       printf("\n");

 

       return0;

 

}

 

 

 

int c_desc(const void *px,const void *py){

 

       const*p1=px;

 

       const*p2=py;

 

 

 

       if(*p1==*p2)

 

              return0;

 

       elseif(*p1>*p2)

 

              return1;

 

       else

 

              return-1;

 

}

 

 

 

#if 0

 

int c_asc(const void *px,const void *py){

 

       const*p1=px;

 

       const*p2=py;

 

 

 

       if(*p1==*p2)

 

              return0;

 

       elseif(*p1>*p2)

 

              return-1;

 

       else

 

              return1;

 

}

 

#endif

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 日韩欧美久久精品 | 先锋av资源网 | 欧美日韩视频在线播放 | 99精品99| 国产成人免费视频网站视频社区 | 欧美三级免费观看 | 国产三区精品 | 中文字幕在线观看一区 | 九九99久久| 中国美女一级黄色片 | 国产无套一区二区三区久久 | 成人免费视频网站在线看 | 伊人精品在线 | 色吊丝2288sds中文字幕 | 一区二区成人 | 精品一区国产 | 男女下面一进一出网站 | 在线 丝袜 欧美 日韩 制服 | 欧美日韩一二区 | 欧美亚洲一级 | 人和拘一级毛片c | 久久久久国产精品 | 亚洲综合电影 | 久久99精品久久久久久国产越南 | 91精品久久久久久久久中文字幕 | 国产精品成人一区二区三区夜夜夜 | 天天色综网 | 成人欧美一区二区三区黑人孕妇 | 国产成人jvid在线播放 | 国产高清精品在线 | 久久99国产精一区二区三区 | 亚洲国产一区二区三区 | 激情在线视频网站 | 日韩精品在线观看一区二区 | av一二三四| 亚洲 一区 | 国产精品一区视频 | 欧美久久久电影 | 男女羞羞视频在线观看 | 亚洲高清网 | 91精品国产色综合久久不卡蜜臀 |