排序集锦

各种排序算法,总结一下,一直在遗忘......

【冒泡排序】

就是下面这个鬼啦:

c实现代码(升序):

#include<stdio.h>

void BubbleSort(int *array,int num)
{
int i,j,temp;
for(j=;j<num;j++)
{
for(i=;i<num-j;i++)
{
if(array[i-]>array[i]) //倒序就把这里改成<咯
{
temp=array[i-];
array[i-]=array[i];
array[i]=temp;
}
}
}
}
int main()
{
int num;
scanf("%d",&num);
int array[num];
int i;
for(i=;i<num;i++)
{
scanf("%d",&array[i]);
}
BubbleSort(array,num);
for(i=;i<num;i++)
{
printf("%d ",array[i]);
}
printf("\n");
return ; }

【插入排序】

按顺序插入

C语言实现:

#include<stdio.h>

void insertionsort(int *array,int num)
{
int i,j;
for(i=;i<num;i++)
{
int current=array[i];
j=i-;
while(j>= && array[j]>current)
{
array[j+]=array[j];//后移为current空出位置
j--;
}
array[j+]=current;//将current插入空位
}
} int main()
{
int num;
scanf("%d",&num);
int array[num];
int i;
for(i=;i<num;i++)
{
scanf("%d",&array[i]);
}
insertionsort(array,num);
for(i=;i<num;i++)
{
printf("%d ",array[i]);
}
printf("\n");
return ;

【希尔排序】

C语言实现代

#include<stdio.h>
void shellsort(int *array,int num)
{
int i,j,increment,temp;
for(increment=num/;increment>;increment/=)
{
for(i=increment;i<num;i++)
{
temp=array[i];
for(j=i;i>=increment;j-=increment)
{
if(temp<array[j-increment])
{
array[j]=array[j-increment];
}
else
{
break;
}
}
array[j]=temp;
}  //这里其实跟普通插入一样咯,除了间隔大点
}  //更改步长,直至最后increment=1,即为普通插入排序
} int main()
{
int num;
scanf("%d",&num);
int array[num];
int i;
for(i=;i<num;i++)
{
scanf("%d",&array[i]);
}
shellsort(array,num);
for(i=;i<num;i++)
{
printf("%d ",array[i]);
}
printf("\n");
return ;
}

【选择排序】

C语言实现代码:

#include<stdio.h>
void selectionsort(int *array,int num)
{
int i,j,minindex,temp;
for(i=;i<num;i++)  //从0开始挑选出i之后最小的数放到i的位置
{
minindex=i;
for(j=i+;j<num;j++)
{
if(array[j]<array[minindex])
{
minindex=j;
}
}
temp=array[i];
array[i]=array[minindex];
array[minindex]=temp;
}
} int main()
{
int num;
scanf("%d",&num);
int array[num];
int i;
for(i=;i<num;i++)
{
scanf("%d",&array[i]);
}
selectionsort(array,num);
for(i=;i<num;i++)
{
printf("%d ",array[i]);
}
printf("\n");
return ;
}

【归并排序】

排序过程动图:

C语言实现代码:

#include<stdio.h>

void merge(int *array,int left,int mid,int right)
{
int temp[right-left+];
int pos=,lpos=left,rpos=mid+;
int i;
/*分两个阶段考虑:
  ①左右两端都未遍历完——比较排序 
②有一边遍历完但另一边没有——将未遍历完的依次添加到排序数列后面
最后将temp放入array*/
  while(lpos<=mid&&rpos<=right)
  { 
    if(array[lpos]<array[rpos])
    {
      temp[pos++]=array[lpos++];
    }   
    else
    {  
       temp[pos++]=array[rpos++];
    }
  }  
//阶段①↑
while(lpos<=mid)
temp[pos++]=array[lpos++];
while(rpos<=mid)
temp[pos++]=array[rpos++];
//阶段②↑
for(i=;i<pos;i++)
{
array[i+left]=temp[i];
}
} //归并过程 void mergesort(int *array,int left,int right)
{
int mid=(left+right)/;
if(left<right) //当left=right,返回上层进行merge()
{
mergesort(array,left,mid);
mergesort(array,mid,right);
merge(array,left,mid,right);
} //递归
} int main()
{
int num;
scanf("%d",&num);
int array[num];
int i;
for(i=;i<num;i++)
{
scanf("%d",&array[i]);
}
mergesort(array,,num-);
for(i=;i<num;i++)
{
printf("%d ",array[i]);
}
printf("\n");
return ;
}

Properties ∠( ᐛ 」∠)_:

最差时间复杂度
最优时间复杂度
平均时间复杂度
最差空间复杂度

【快速排序】

Quick Sort是Bubble Sort改进方法。

和归并一样用到分治思想。

图示:

C语言实现代码:

#include<stdio.h>
void quicksort(int *array,int from,int to)
{
if(from>=to) return;
int pivot=array[from]; //pivot就是划分数,即开头那个数啦(其实选哪个数做pivot随你啦)
int i=from,j,temp;
for(j=from+;j<=to;j++) //遍历pivot之后的数
{
if(array[j]<pivot)
{
i=i+; //i在计数比pivot小的数的数量
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
} //通过这个循环将划分区域内数按大小关系分成大于pivot和小于pivot两拨
temp=array[i];
array[i]=array[from];
array[from]=temp;
//将i位置与起始位置数值调换,将pivot换到中间值,原i位置是右边那拨最小数
quicksort(array,from,i-);
quicksort(array,i+,to);
//递归,对pivot两边区域继续quicksort
} int main()
{
int num;
scanf("%d",&num);
int array[num];
int i;
for(i=;i<num;i++)
{
scanf("%d",&array[i]);
}
quicksort(array,,num-);
for(i=;i<num;i++)
{
printf("%d ",array[i]);
}
printf("\n");
return ;
}

其他堆排序什么的之后鞋数据结构再说吧QAQ

【Sorting Collection】的更多相关文章

  1. C#梳理【集合Collection】

    C# 集合(Collection) 集合(Collection)类是专门用于数据存储和检索的类.这些类提供了对栈(stack).队列(queue).列表(list)和哈希表(hash table)的支 ...

  2. 【Unity3D实战】摇摆直升机开发实战(一)

    [Unity3D实战]摇摆直升机开发实战(一) 1.点击[Assets],创建[Sprites]和[Resources]文件夹,然后将所需要的素材导入[Sprites]文件夹中. 2.找到[Sprit ...

  3. 【python进阶】Garbage collection垃圾回收2

    前言 在上一篇文章[python进阶]Garbage collection垃圾回收1,我们讲述了Garbage collection(GC垃圾回收),画说Ruby与Python垃圾回收,Python中 ...

  4. 【Spring实战】----开篇(包含系列目录链接)

    [Spring实战]----开篇(包含系列目录链接) 置顶2016年11月10日 11:12:56 阅读数:3617 终于还是要对Spring进行解剖,接下来Spring实战篇系列会以应用了Sprin ...

  5. 20个新鲜出炉的网站模板【HTML & PSD】

    这里给大家分享20 个新鲜出炉的免费网站模板.这些设计元素将成为你下一个项目的重要素材,可以帮你节省很多的时间.与往常一样,我们经常漫游网络,寻找最好的资源, HTML.CSS 和 PSD 等等,记得 ...

  6. Python开发【第二章】:Python的数据类型

    基本数据类型 一.整型 如: 18.73.84 整型具备如下功能: class int(object): """ int(x=0) -> int or long i ...

  7. 【MongoDB数据库】MongoDB 命令入门初探

    MongoDB是一款NoSql数据库,使用了"面向集合"(Collection-Oriented)原理,意思是数据被分组存储在数据集中,被称为一个集合(Collection).每一 ...

  8. IT第二十一天 - Collections、ArrayList集合、LinkedList集合、Set集合、HashMap集合、集合的操作注意【修20130828】

    NIIT第二十一天 上午 集合 1. 集合Collection存储数据的形式是单个存储的,而Map存储是按照键值对来存储的,键值对:即键+值同时存储的,类似align="center&quo ...

  9. 【Holograms 101D】一步步用Unity 开发 Hologram

    转载请注明出处: copperface:[Holograms 101D]一步步用Unity 开发 Hologram Holograms 101 该教程将带领你走完 Hologram 创建 的全过程.整 ...

随机推荐

  1. [LeetCode] Trapping Rain Water II 收集雨水之二

    Given an m x n matrix of positive integers representing the height of each unit cell in a 2D elevati ...

  2. [LeetCode] Spiral Matrix 螺旋矩阵

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  3. 分享基于EF+MVC+Bootstrap的通用后台管理系统及架构

      基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级的缓存模块.日志模块.上传缩略图模块.通用配置及服务调用, 提供了OA.CRM.CMS的原型实例,适合快速构建中小型互联网及行业 ...

  4. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)

    前言:之前的两篇封装了一些基础的表单组件,这篇继续来封装几个基于bootstrap的其他组件.和上篇不同的是,这篇的有几个组件需要某些js文件的支持. 本文原创地址:http://www.cnblog ...

  5. 如何在HoloLens中创建一个2D的Hello World程序

    注:本文提及到的代码示例下载地址 > How to build an "Hello World" 2D app in HololLens. HoloLens 是微软的一款MR ...

  6. HTTP服务器(2)

    导语 重定向器是特殊用途的HTTP服务器的另一个简单而有用的应用程序.它的作用就是将用户从一个WEB网站重定向到另外一个网站.下面是一个简单的例子,程序沿用上一个SingleHttpServer代码. ...

  7. 1229【MySQL】性能优化之 Index Condition Pushdown

    转自http://blog.itpub.net/22664653/viewspace-1210844/  [MySQL]性能优化之 Index Condition Pushdown2014-07-06 ...

  8. 【BZOJ 2595】【WC 2008】游览计划

    http://www.lydsy.com/JudgeOnline/problem.php?id=2595 斯坦纳树的例题诶...我怎么做了好长时间_(:з」∠)_ 首先这是一棵树. 状压表示状态,\( ...

  9. jquery获取url参数及url加参数的方法

    转--http://www.jb51.net/article/73896.htm <script src="js/jquery-1.7.2.min.js" type=&quo ...

  10. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...