zoukankan      html  css  js  c++  java
  • C语言面试题(三)

      这篇主要聚焦在排序算法,包括常见的选择排序,插入排序,冒泡排序,快速排序。会对这四种排序的时间复杂度和空间复杂度进行探究。

    a.选择排序

     1 int main(int argc,char **argv){
     2 int a[12]={43,34,654,3,45,6,54,8,65,10,76,12};
     3 int i,j,t,tmp;
     4 for(i=0;i<12-1;i++){
     5 t=i;
     6 for(j=i;j<12;j++){
     7 if (a[t]>a[j]) t=j;
     8 }
     9 if (t!=i){
    10 tmp=a[i];
    11 a[i]=a[t];
    12 a[t]=tmp;
    13 }
    14 }
    15 for(i=0;i<12;i++)printf("%d ",a[i]);
    16 return 0;
    17 }

    b.插入排序

     1 int main(int argc,char **argv){
     2 int a[12]={43,34,654,3,45,6,54,8,65,10,76,12};
     3 int i,j,t,tmp;
     4 for(i=1;i<12;i++){
     5 t=a[i];
     6 j=i-1;
     7 while(j>=0&&a[j]>t){
     8 a[j+1]=a[j];
     9 file:///E|/embed/Linux/book/c_note.txt[2015-05-30 23:43:42]j--;
    10 }
    11 a[j+1]=t;
    12 }
    13 }
    14 for(i=0;i<12;i++)printf("%d ",a[i]);
    15 return 0;
    16 }

    c.冒泡排序

     1 int main(int argc,char **argv)
     2 {
     3     int a[12]={43,34,654,3,45,6,54,8,65,10,76,12};
     4     int i,j,t;
     5     for(i=1;i<12;i++)
     6    {
     7         for(j=0;j<12-i;j++)
     8       {
     9             if (a[j]>a[j+1])
    10           {
    11                 t=a[j];
    12                 a[j]=a[j+1];
    13                 a[j+1]=t;
    14           }
    15       }
    16    }
    17     for(i=0;i<12;i++)printf("%d ",a[i]);
    18     return 0;
    19 }    

    d.快速排序

     1 void qsort(int s[], int l, int r)
     2 {
     3     int i, j, x;
     4     if (l < r)
     5     {
     6         i = l;
     7         j = r;
     8         x = s[i];
     9         while (i < j)
    10         {
    11             while(i < j && s[j] > x) j--; /* 从右向左找第一个小于x的数 */
    12             if(i < j) s[i++] = s[j];
    13             while(i < j && s[i] < x) i++; /* 从左向右找第一个大于x的数 */
    14             if(i < j) s[j--] = s[i];
    15         }
    16         s[i] = x;
    17         qsort(s, l, i-1); /* 递归调用 */
    18         qsort(s, i+1, r);
    19     }
    20 }
    wsksec@gmail.com Pressing on Toward the Goal
  • 相关阅读:
    图像处理之优化---任意半径局部直方图类算法在PC中快速实现的框架
    新的验证方式---短信验证和语言验证
    习武 之路---通背拳和苗刀!
    模式识别之Shape Context---利用Shape Context进行形状识别
    ELK 部署
    rsync实现文件备份同步
    oracle-3-子查询和常用函数
    oracle-2中commit 详解
    使用nginx绑定域名,代理gitlab
    Linux Crontab 安装使用详细说明
  • 原文地址:https://www.cnblogs.com/shuk-notes/p/4694920.html
Copyright © 2011-2022 走看看