| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 569 人关注过本帖
标题:还有三个排序算法真心不会编了啊~~~求大神。。。
只看楼主 加入收藏
leemingyaa
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-22
收藏
 问题点数:0 回复次数:5 
还有三个排序算法真心不会编了啊~~~求大神。。。
关于堆排序,归并排序,继续排序



从前面四个排序大神肯定能看清我的思路。。。求补充啊求补充~~~





就是这种形式

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
void pr(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
}
void mp()//冒泡排序法
{
    int a[100]={0},i=0,n=0,j,t;
    printf("请输入需要排序的数组,按回车键确认:");
    do
    {
        scanf("%d",&a[i]);
        i++;
        n++;
    }while(getchar()!='\n');
    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;
                pr(a,n);
            }
        }
    }
    printf("Press any key to continue");
    getchar();   
}






void quick(int a[],int n,int left,int right)
{
    int i,j,t;
    if(left<right){
        i=left;j=right+1;
        while(1){
            while(i+1<n&&a[++i]<a[left]);
            while(j-1>-1&&a[--j]>a[left]);
            if(i>=j)break;
            t=a[i],a[i]=a[j],a[j]=t;
        }
        t=a[left],a[left]=a[j],a[j]=t;
        pr(a,n);
        quick(a,n,left,j-1);
        quick(a,n,j+1,right);
    }
}
void ks()
{
    int a[100]={0},i=0,n=0;
    printf("请输入需要排序的数组,按回车键确认:");
    do
    {
        scanf("%d",&a[i]);
        i++;
        n++;
    }while(getchar()!='\n');
    quick(a,n,0,n-1);
    printf("Press any key to continue");
    getchar();   
}





void insert(int a[],int n)
{
    int i,k,t;
    for(i=1;i<n;i++)
    {
        t=a[i],k=i-1;
        while(t<a[k])
        {
            a[k+1]=a[k],k--;
            if(k==-1)break;
        }
        a[k+1]=t;
        pr(a,n);
    }
}
void cr()//插入排序法
{
    int a[100]={0},i=0,n=0,j,t,k;
    printf("请输入需要排序的数组,按回车键确认:");
    do
    {
        scanf("%d",&a[i]);
        i++;
        n++;
    }while(getchar()!='\n');
    insert(a,n);
    printf("Press any key to continue");
    getchar();   
}





void select(int a[],int n)
{
    int i,j,k,t;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        {
            if(a[j]<a[k])
            {
                k=j;
            }
            if(i!=k)
            {
                t=a[i];
                a[i]=a[k];
                a[k]=t;
            }
        }
        pr(a,n);
    }
}
void xz()//选择排序法
{
    int a[100]={0},i=0,n=0,j,t,k;
    printf("请输入需要排序的数组,按回车键确认:");
    do
    {
        scanf("%d",&a[i]);
        i++;
        n++;
    }while(getchar()!='\n');
    //count<<endl;
    select(a,n);
    printf("Press any key to continue");
    getchar();   
}





void d()
{
    int a[100]={0},i=0,n=0,j,t;
    printf("请输入需要排序的数组,按回车键确认:");
    do
    {
        scanf("%d",&a[i]);
        i++;
        n++;
    }while(getchar()!='\n');
    printf("Press any key to continue");
    getchar();   
}
void js()
{
    int a[100]={0},i=0,n=0,j,t;
    printf("请输入需要排序的数组,按回车键确认:");
    do
    {
        scanf("%d",&a[i]);
        i++;
        n++;
    }while(getchar()!='\n');
    printf("Press any key to continue");
    getchar();   
}
void gb()
{
    int a[100]={0},i=0,n=0,j,t;
    printf("请输入需要排序的数组,按回车键确认:");
    do
    {
        scanf("%d",&a[i]);
        i++;
        n++;
    }while(getchar()!='\n');
    printf("Press any key to continue");
    getchar();   
}
void main()
{
    int i=0,n=0,a[100]={0},x;
    while(1)
    {
        system("cls");//选择排序方式
        printf("请选择排序方式\n");
loop:    printf("1.快速排序\n");
        printf("2.插入排序\n");
        printf("3.选择排序\n");
        printf("4.冒泡排序\n");
        printf("5.堆排序\n");
        printf("6.归并排序\n");
        printf("7.基数排序\n");
        printf("8.结束程序\n您选择的是:");
        scanf("%d",&x);
        if(x==1)
        {
            ks();
        }
        if(x==2)
        {
            cr();
        }
        if(x==3)
        {
            xz();
        }
        if(x==4)
        {
            mp();
        }
        if(x==5)
        {
            d();
        }
        if(x==6)
        {
            gb();
        }
        if(x==7)
        {
            js();
        }
        if(x==8)
        {
            printf("8.结束程序,程序将终止\n再见!\n");break;
        }
        if(x!=1&&x!=2&&x!=3&&x!=4&&x!=5&&x!=6&&x!=7&&x!=8)
        {
            system("cls");
            printf("选择错误,请重新输入!\n");goto loop;
        }
    }
}

[ 本帖最后由 leemingyaa 于 2012-6-22 15:44 编辑 ]
搜索更多相关主题的帖子: void include 
2012-06-22 15:38
leemingyaa
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-22
收藏
得分:0 
好吧大神们真心撤了啊~~~
2012-06-22 15:48
leemingyaa
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-22
收藏
得分:0 
关键是这三个书上也找不到   网上找太乱了~~~哭
2012-06-22 16:09
leemingyaa
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-22
收藏
得分:0 
自己做出来了~~
2012-06-22 19:24
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
网上能找到标准的代码吧。查点资料,研究一下应该就能搞定了。
2012-06-23 21:53
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:0 
数据结构和算法里都有
2012-06-24 10:26
快速回复:还有三个排序算法真心不会编了啊~~~求大神。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035279 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved