写排序的几种算法,简单选择排序,直接插入排序,冒泡排序,详细点

如题所述

这个我知道,希望能帮助你!
/* 排序 */
#include"stdio.h"
#define M 50

void bubblesort(int a[], int n);
void insertsort(int a[],int n);
void selectsort(int a[],int n);
void main()
{
int a[M],i,n,j,locate,kk;
clrscr();
while(1)
{
window(1,1,80,6);clrscr();
printf("\n ----------------------------------\n\n");
printf(" 1.create 2.bubblesort 3. insertsort 4.selectsort\n");
printf(" 0.exit\n");
printf("input your choice:");
scanf("%d",&kk);
switch(kk)
{
case 1:window(1,8,80,25);clrscr();
printf("\ninput number: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<=n;i++)
printf("%5d",a[i]);
break;
case 2:window(1,8,80,25);clrscr();
bubblesort (a,n);
break;

case 3:window(1,8,80,25);clrscr();
insertsort(a,n);
break;
case 4:window(1,8,80,25);clrscr();
selectsort(a,n);
break;
default:exit(0);
}
}

}
void selectsort(int a[],int n)/*简单选择排序*/
{
int i,j,k,temp,m;
for(i=1;i<=n-1;i++) /*趟数*/
{
m=i;
for(j=i+1;j<=n;j++) /*存放最小数的位置*/
if(a[j]<a[m]) m=j;
temp=a[i];a[i]=a[m];a[m]=temp;
for(k=1;k<=n;k++)
printf("%5d",a[k]);
printf("\n");
}

}
void insertsort(int a[],int n)/*直接插入排序*/
{
int i,j,k,temp; /*趟数*/
for(i=2;i<n;i++)
{
a[0]=a[i];
j=i-1;
while(a[j]>a[0])
{ a[j+1]=a[j];
j--;

}
a[j+1]=a[0];
for(k=1;k<=n;k++)
printf("%5d",a[k]);
printf("\n");
}

}
void bubblesort(int a[],int n)
{
int i,j,k,temp;
for(i=1;i<=n-1;i++) /*趟数*/
{
for(j=1;j<=n-i;j++)
{
if(a[j]>a[j+1])
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}

}
for(k=1;k<=n;k++)
printf("%5d",a[k]);
printf("\n");
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-28
楼主留邮箱吧,我给你发过去
第2个回答  2011-06-28
//插入
void insert_sort(int a[],int n)
{
int tmp,i,j;
for ( i=1; i<n; i++) {
tmp=a[i];
for (j=i-1; j>-1&&a[j]>a[i]; j--)
a[j+1]=a[j];
a[j+1]=tmp;
}
}
// 冒泡
int bubble_sort(int a[],int n)
{
int tmp,i,j;
for (i=n-1; i>0; i--)
for (j=0;j<i;j++) {
if (a[j]>a[j+1]) {
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
//选择
int select_sort(int a[],int n)
{
int tmp,i,j,min,min_i;
for (i=0; i<n-1; i++){
min=a[i];
min_i=i;
for (j=i+1;j<n;j++){
if (a[j]<min){
min=a[j];
min_i=j;
}
}
tmp=min;
a[min_i]=a[i];
a[i]=tmp;
}
}
第3个回答  2011-06-29
楼主要什么语言的?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网