A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 呀嘛咕 中级黑马   /  2014-5-29 20:20  /  1541 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

平时候是直接用sort()的,好久没有写这些排序了。我们不能忘记他们的内部实现原理。

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "stdlib.h"
//冒泡排序
void bubbling(int b[],int n){
int i,j,length=n-1,temp;
for(i=1;i<=length;){
  for(j=i-1;j<length;j++){
    if(b[j]>b[j+1]){
      temp=b[j];
      b[j]=b[j+1];
      b[j+1]=temp;
    }
  }
  length=j-1;
  }
}
//选择排序
void select(int b[],int n){
  int i,j,k,temp;
  for(i=0;i<n-1;i++){
    k=i;
    for(j=i+1;j<n;j++){
      if(b[k]>b[j])  k=j;
    }
    if(k!=i){
      
      temp=b[k];
      b[k]=b;
      b=temp;
      }
    }
}
//插入排序
void insert(int b[],int n){
  int i,t,j;
  for(i=1;i<n;i++){
    for(t=b,j=i-1;j>=0&&t<b[j];j--){
      b[j+1]=b[j];
      b[j]=t;
      }
    }
}
//希尔排序
void shell(int b[],int n){
  int h,j,k,y;
  for(h=n/2;h>0;h=h/2){
    for(j=h;j<n;j++){
    y=b[j];
    for(k=j-h;k>=0&&y<b[k];k=k-h){
      b[k+h]=b[k];
      b[k]=y;
      }
    }
    }
}
//待写....................明天要考试
//快速排序
// void quick(int b[],int n){}
//堆排序
//void stack(int b[],int n){}
//归并排序
//combine(itn b[],int n){}
void main()
{
int a[8]={9,5,14,11,8,9,4,10};
int m=8,i,alter,show;
printf("before Sort:\n");
for(i=0;i<8;i++){
   printf("%d\t",a);
}
printf("\n**********************************\n");
printf("冒泡排序.....1\n");
printf("选择排序.....2\n");
printf("插入排序.....3\n");
printf("希尔排序.....4\n");
printf("退出.........0\n");
printf("**********************************");
do{
printf("\nPlease input your alter:");
scanf("%d",&alter);
switch(alter){
   case 1:bubbling(a,m);
   show=1;
   printf("after bubbling sort:\n");
   break;
   case 2:select(a,m);
   show=1;
   printf("after select sort:\n");
   break;
   case 3:insert(a,m);
   show=1;
   printf("after insert sort:\n:");
   break;
   case 4:shell(a,m);
   show=1;
   printf("after shell sort:\n:");
   break;
   case 0:exit(0);
   default:printf("input error!!!!!!!!");
   show=0;
}
if(show!=0){
for(i=0;i<8;i++){
   printf("%d\t",a);
}
}
}while(alter!=0);

}


评分

参与人数 1技术分 +1 收起 理由
张然龙 + 1 哥们不容易,给一分,不过要注意排版哈。.

查看全部评分

6 个回复

倒序浏览
支持一下,收藏了!
回复 使用道具 举报
好啊好啊
回复 使用道具 举报
哎呦,不错
回复 使用道具 举报
顶一个吧,不过排版有点乱
回复 使用道具 举报
顶一个......
回复 使用道具 举报
an1911 中级黑马 2014-5-30 17:15:30
7#
学习学习。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马