文档章节

排序的整理

fans1991
 fans1991
发布于 2013/04/11 17:33
字数 616
阅读 28
收藏 0

自己之前搞的一些排序算法,希望对大家有帮助。差不多就这么多种吧。

void  bubblesort(int *a,int n)         //冒泡排序

{int i,j,t;

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

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

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

t=a[j];

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

a[j+1]=t;  }   }

}

void selectsort(int *a,int n)              //选择排序

int i,j,max,t;

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

{

max=i;

for(j=i+1;j<n;j++)

{

if(a[max]>a[j])

{

max=j;  }

} if(max!=i)  {

t=a[i];

a[i]=a[max];

a[max]=t; }

}

}

void InsertSort(int *a,int n)   //插入排序

{

int i,j,temp;

for(i=1;i<n;i++) {

temp=a[i];

for(j=i-1;j>=0 && a[j]>temp; j--) {

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

a[j]=temp;    

}

}

}

void Quicksort(int *a,int left,int right)     //快排

{

int i,j,t;

i=left;

j=right+1;

 

if(i<j) {

do {

do {

i++;

}while(i<=right && a[i]<a[left]);

 

do{

j--;

}while(j>=left && a[j]>a[left]);

if(i<j) {

t=a[i];

a[i]=a[j];

a[j]=t;

}

}while(i<j);

t=a[j];

a[j]=a[left];

a[left]=t;

Quicksort(a,left,j-1);

Quicksort(a,j+1, right);

}

}

void   creatheap(int *a,int root,int index)   //堆排

{

int i,t,flag=0;

i=2*root;

t=a[root];

while(i<=index && flag==0) {

if(i<index) {

if(a[i]<a[i+1]) {

i++;

}

}

if(a[i]< t)      //  a[i/2] ****************∂»¥Û”⁄2 ±t********************

{

flag=1;

}

else{

a[i/2]=a[i];

//   a[i]=t;      /////////////////////////////////////

i=2*i;

}

}

a[i/2]=t;

}

void sort(int *a,int index) {

int i,j,t;

for(i=index/2;i>=1;i--) {

creatheap(a,i,index);

}

for(i=index;i>=1;i--) {

t=a[1];

a[1]=a[i];

a[i]=t;

creatheap(a,1,i-1);

}

}

void shellsort(int *a,int n)          //希尔

{

int i,j,flag,gap=n,t;

while(gap>1) {

gap=gap/2;

 do{

flag=0;

for(i=0;i<n-gap;i++) {

j=i+gap; 

if(a[i]>a[j]) {

t=a[i];

a[i]=a[j];

a[j]=t;

flag=1;

}

}

}while(flag!=0); 

}

}

void Counting_Sort(int a[],int b[],int n,int max)  //基数排序

{

int i,*count;

count=(int *)malloc((max+1)*sizeof(int));

memset(count,0,(max+1)*sizeof(int));

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

count[a[i]]++;

for(i=1;i<=max;i++)

count[i]+=count[i-1];

for(i=n-1;i>=0;i--)

{

b[count[a[i]]-1]=a[i];

count[a[i]]--;

}

free(count);

}

void  MergeSort(int *a,int first,int mid,int last,int *temp)  //归并排序

{

int i=first;

int j=mid+1;

int m=mid;

int n=last;

int k=0;

 

while(i<=m &&j<=n)

{

if(a[i]<a[j])

{

temp[k++]=a[i++];

}

if(a[i]>a[j])

{

temp[k++]=a[j++];

}

}

 

while(i<=m )

{

temp[k++]=a[i++];

}

 

while (j<=n )

{

temp[k++]=a[j++];

}

 

 

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

{

 

a[first+i]=temp[i];             //

}

 

 

 

}

 

void mergesort(int *a,int first,int last,int *temp)

{

int mid=(first+last)/2;

 

if (first>=last)

{

return;

}

mergesort(a,first,mid,temp);

mergesort(a,mid+1,last,temp);

MergeSort(a,first,mid,last,temp);

 

}

 

void  Sort(int *a,int index)

{

int *temp=(int *)malloc(sizeof(a[0])*index);

 

if (temp==NULL)

{

return;

}

mergesort(a,0,index-1,temp);

}

© 著作权归作者所有

fans1991
粉丝 2
博文 5
码字总数 1002
作品 0
厦门
程序员
私信 提问
MySQL 关键字模糊匹配,并按照匹配度排序

MySQL 关键字模糊匹配,并按照匹配度排序。 方式一、按照关键字搜索,然后根据关键字所占比例排序 效果如下 方式二、将关键字开头记录排序在前 效果如下 方式三、将关键字开头排序在前,再根...

皮皮猫32
2018/10/21
1K
0
排序算法整理

冒泡排序   冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。举个栗子,对5,3,8,6,4这个无序...

Seas0n_
2016/03/06
139
0
表格排序——tablesorter.js使用(支持中文排序)

最近,因为项目需要,对表格排序做了一下摸索,整理如下: 1. 首先,可从官网下载tablesorter.js,但并不支持中文的排序,对其源码进行修改: 部分源码: function sortText(a, b) { return...

renling
2014/01/14
4.9K
3
Emacs: css-sort.el 自动排序CSS属性

很痛快的写完CSS以后, 最郁闷的是还要排序CSS属性, 而且大家推崇的 CSS排序规范 还贼长, 人工调整CSS属性是非常痛苦的. 今天把原来的代码函数重新整理了一下, 写了一个新的插件 css-sort.el ...

ManateeLazyCat
2018/11/20
0
0
python 多维数组排序 和 两个list生成dict

python 多维数组排序 想到排序,先想到了生成字典再排序,实现起来很麻烦。后来找到了按照list排序的方法。 python将两个list元素一一对应转换为dict >>>names = ['n1','n2','n3'] >>>value......

zhaobaoxin123
2017/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
4
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0
重读《学习JavaScript数据结构与算法-第三版》- 第5章 队列

定场诗 马瘦毛长蹄子肥,儿子偷爹不算贼,瞎大爷娶个瞎大奶奶,老两口过了多半辈,谁也没看见谁! 前言 本章为重读《学习JavaScript数据结构与算法-第三版》的系列文章,主要讲述队列数据结...

胡哥有话说
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部