您的位置:首页 > 其它

常用的排序算法

2015-11-26 14:23 387 查看
//冒泡排序

void bubble(int []a){

BOOL exchanged=
YES;

for (int i=0; i<a.length-1&&exchanged; i++)

{

exchanged=NO;

for (int j=0; j<(a.length-1-i); j++)

{

int aj =a[j];

int aj1 = a[j+1];

if (aj>aj1)

{

exchanged=YES;

a[j+1]=aj;

a[j]=aj1;

}

}

}

}

//选择排序

void select(int [] a ){

for (int i=
0; i<a.length; i++)

{

for (int j=i ; j<a.length; j++)

{

int ai=a[i];

int aj = a[j];

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

a[i]=aj;

a[j]=ai;

}

}

}

}

//插入排序

void insert (int [] a){

for (int i =1; i<a.length; i++)

{

int ai = a[i],aj;

int j=i;

while (j>0&&(aj=a[j-1])>ai)

{

a[j]=ai;

j--;

}

a[j]=ai;

}

}

//快速排序

void quick(int [] a,int left,int right){

if (left<right)

{

int key=a[left];

int low = left;

int high = right;

while (low<high) {

while (low<high && a[high]>=key) {

high--;

}

a[low]=a[high];

while (low<high && a[low]<=key) {

low++;

}

a[high]=a[low];

}

a[low]=key ;

quick(a,left,low-1);

quick(a,low+1,right);

}

}

//汉诺塔算法

void hanoi(int i,char A,char B,char
C){

if (i==1)

{

move(i,A,C);

}else

{

hanoi(i-1,A,C,B);

move(i,A,C);

hanoi(i-1,B,A,C);

}

}

void move(int i,char x ,char y){

printf("Move disk i from x to y");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: