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

a.选择排序

 int main(int argc,char **argv){
int a[]={,,,,,,,,,,,};
int i,j,t,tmp;
for(i=;i<-;i++){
t=i;
for(j=i;j<;j++){
if (a[t]>a[j]) t=j;
}
if (t!=i){
tmp=a[i];
a[i]=a[t];
a[t]=tmp;
}
}
for(i=;i<;i++)printf("%d ",a[i]);
return ;
}

b.插入排序

 int main(int argc,char **argv){
int a[]={,,,,,,,,,,,};
int i,j,t,tmp;
for(i=;i<;i++){
t=a[i];
j=i-;
while(j>=&&a[j]>t){
a[j+]=a[j];
file:///E|/embed/Linux/book/c_note.txt[2015-05-30 23:43:42]j--;
}
a[j+]=t;
}
}
for(i=;i<;i++)printf("%d ",a[i]);
return ;
}

c.冒泡排序

 int main(int argc,char **argv)
{
int a[]={,,,,,,,,,,,};
int i,j,t;
for(i=;i<;i++)
{
for(j=;j<-i;j++)
{
if (a[j]>a[j+])
{
t=a[j];
a[j]=a[j+];
a[j+]=t;
}
}
}
for(i=;i<;i++)printf("%d ",a[i]);
return ;
}

d.快速排序

 void qsort(int s[], int l, int r)
{
int i, j, x;
if (l < r)
{
i = l;
j = r;
x = s[i];
while (i < j)
{
while(i < j && s[j] > x) j--; /* 从右向左找第一个小于x的数 */
if(i < j) s[i++] = s[j];
while(i < j && s[i] < x) i++; /* 从左向右找第一个大于x的数 */
if(i < j) s[j--] = s[i];
}
s[i] = x;
qsort(s, l, i-); /* 递归调用 */
qsort(s, i+, r);
}
}

最新文章

  1. nodejs的第五天学习笔记
  2. nginx学习记录/2016.11.14
  3. Web API路由和动作选择
  4. word linkage 选择合适的聚类个数matlab code
  5. Java-J2SE学习笔记-树状展现文件结构
  6. Gray code---hdu5375(格雷码与二进制码,普通dp)
  7. 僵尸进程&amp;孤儿进程
  8. C#简单应用spring的例子
  9. Linux串口编程(转载)
  10. 为ListView添加头和脚
  11. HDU 3920 Clear All of Them I(DP + 状态压缩 + 贪心)
  12. 【转】Oracle中dual表的用途介绍
  13. MongoDB 与传统关系型数据库mysql比较
  14. Python爬虫(一)
  15. 二分算法C实现
  16. web 自定义标签
  17. vue自定义指令用法总结及案例
  18. BZOJ1040 [ZJOI2008]骑士 基环树林(环套树) 树形动态规划
  19. 排序(N+1种)
  20. C++ 学习 之Struct

热门文章

  1. Codeforces Round #361 (Div. 2) C D
  2. Thinking in Java——笔记(3)
  3. 《MongoDB 权威指南》 学习总结
  4. 针对focus和blur的Dom事件触发顺序
  5. Mybatis 与 spring mvc
  6. Decimal To Fraction 小数转换成分数
  7. lodash的源码(1)
  8. MySQL字符编码
  9. HTTP下载文件名称编码说明
  10. RDIFramework.NET ━ 9.11 数据字典管理 ━ Web部分