写排序的几种算法,简单选择排序,直接插入排序,冒泡排序,详细点
发布网友
发布时间:2022-04-28 22:16
我来回答
共4个回答
热心网友
时间:2022-04-19 03:21
这个我知道,希望能帮助你!
/* 排序 */
#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");
}
}
热心网友
时间:2022-04-19 04:39
楼主留邮箱吧,我给你发过去
热心网友
时间:2022-04-19 06:14
//插入
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;
}
}
热心网友
时间:2022-04-19 08:05
楼主要什么语言的?