| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1118 人关注过本帖
标题:【作业】快速排序
只看楼主 加入收藏
yijun168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:11 
【作业】快速排序

#include<stdio.h>
void main()
{
    int a[8];
    int i,j,t;
    printf("input 8 numbers :\n");
    for(i=0;i<8;i++)
    scanf("%d",&a[i]);
    printf("\n");
    for(j=0;j<8;j++)
    for(i=0;i<8-j;i++)
    if(a[i]>a[i+1])
    {
        t=a[i];
        a[i]=a[i+1];
        a[i+1]=t;
    }
    printf("the sorted numbers :\n");
    for(i=0;i<8;i++)
    printf("%d ",a[i]);
    printf("\n");
    }

本人参照同学做的程序,现在老师要求写报告,问:  <1>用了哪几种数据结构  <2>并把程序注释一下,谢谢大虾们帮助小妹完成作业,非常感谢!!!
搜索更多相关主题的帖子: 作业 作业 
2009-11-30 14:18
xy4919961
Rank: 5Rank: 5
等 级:职业侠客
帖 子:199
专家分:362
注 册:2009-10-24
收藏
得分:3 
<1>用了哪几种数据结构:气泡排序法。  
<2>并把程序注释一下:
#include<stdio.h>
void main()
{
    int a[8];
    int i,j,t;
    printf("input 8 numbers :\n");
    for(i=0;i<8;i++)
    scanf("%d",&a[i]); /* 输入数字 */
    printf("\n");
    for(j=0;j<8;j++)  /* 8个数需对比7次 */
    for(i=0;i<8-j;i++) /* 每次内循环交换减j次. */
    if(a[i]>a[i+1])    /* 如果a[i]大于a[i+1] */
    {
        t=a[i];        /* 进行交换
        a[i]=a[i+1];
        a[i+1]=t;      */
    }
    printf("the sorted numbers :\n");
    for(i=0;i<8;i++)    /* 输出已经交换完了的数 */
    printf("%d ",a[i]);
    printf("\n");
    getch();
    }

[ 本帖最后由 xy4919961 于 2009-11-30 14:49 编辑 ]

QQ群:96348241
2009-11-30 14:31
yijun168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-24
收藏
得分:0 
回复 2楼 xy4919961
谢谢大哥,你好!~我们老师不准用气泡法进行排序,说什么数据结构,快数排序呀,你能否帮我重新编一个简单的啊!?~再次感谢!!!
2009-11-30 16:46
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:3 
数据结构?不准用冒泡法?那选择法也是不允许了?排序还有什么方法?就我知道的就一个冒泡一个选择。
2009-11-30 17:05
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:3 
百度一下“快排”。
2009-11-30 17:29
xy4919961
Rank: 5Rank: 5
等 级:职业侠客
帖 子:199
专家分:362
注 册:2009-10-24
收藏
得分:0 
             数据结构,快数排序;
void fun(int n[], int x, int y)/* x代表左边 y代表右边 */
{
    int i=0, pi, j=0;
    if(x<y){
        pi = n[x];/*
        i = x;
        j = y-1;
        while(i < j){
            while(i < j && n[j] >= pi){
                j--;
            }
            if(i < j){
                n[i++] = n[j];
            }
            while(i < j && n[i] <= pi){
                i++;
            }
            if(i < j){
                n[j--] = n[i];
            }
        }
        n[i] = pi;
        fun(n, x, i-1);
        fun(n, i + 1,y);
    }
}
int main(void)
{
    int i;
    int arr[10];

    printf("Input six number: \n");
    for(i = 0; i < 10; i++){
        scanf("%d ", &arr[i]);
    }

    fun(arr, 0, 10);

    for(i = 0; i <10; i++){
        printf("%d ", arr[i]);
    }
     getch();
}
  http://hi.baidu.com/apollo_hj/blog/item/d39a372bb3fea93e5243c110.html 这里是快速排序法原理。.

[ 本帖最后由 xy4919961 于 2009-11-30 17:33 编辑 ]

QQ群:96348241
2009-11-30 17:31
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:3 
void main()
{
int a[8],i,j,k,n,tmp;
for(i=0;i<8;i++)  //存入八个数
{
scanf("%d",&a[i]);
}
for(j=0;j<8;j++){          //第一个和最后一个比,第二个和倒数第二个比,……
  for(k=7;k>j;k--)
    {
       if(a[j]>a[k])
          {
            tmp=a[j];a[j]=a[k];a[k]=tmp;
           }
    }
  }
for(n=0;n<8;n++)
printf("%d",a[n]);
}


顺境逆境切莫止境,得意失意切莫在意。
2009-11-30 17:32
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:3 
程序代码:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
class QuickSort{
private:
    vector<int> buf;
protected:
    int partition(int p, int r);
    void Q_Sort(int p, int r);
public:
    QuickSort(int n)
        {
            int m;
            for( int i=0; i< n; i++)
            {
                cin>>m;
                buf.push_back(m);
            }
        }
    void Sort(){ Q_Sort(0,buf.size()-1);}
    void Q_Show();
};
int QuickSort::partition( int p, int r)
{
    int x=buf.at(r);
    int i=p-1;
    for( int j=p;j<=r-1;j++)
    {
        if( buf.at(j)<=x)
        {
            i++;
            swap(buf.at(i),buf.at(j));
        }
    }
    swap(buf.at(i+1),buf.at(r));
    return i+1;
}
void QuickSort::Q_Sort(int p, int r)
{
    if( p< r)
    {
        int q=partition(p,r);
        Q_Sort(p,q-1);
        Q_Sort(q+1,r);
    }
}
void QuickSort::Q_Show()
{
    vector<int>::iterator it;
    for( it = buf.begin();it!=buf.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
}

int main()
{
    int m;
    cin>>m;
    QuickSort qs(m);
    qs.Q_Show();
    qs.Sort();
    qs.Q_Show();
    return 0;
}
2009-11-30 18:41
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
你们那个也叫快速排序?

无语。。。
2009-11-30 18:41
yijun168
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-11-24
收藏
得分:0 
回复 9楼 Devil_W
我们老师写的快速排序程序,但是我觉得有点复杂,也不能一样的
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int  partition(int a[],int low,int high)
{
    int pivot=a[low];
    int i=low;
    int j=high;
    while(i<j)
    {
        while(i<j&&a[j]>pivot)
        {j--;}
        if(i<j){a[i]=a[j];i++;}
        while(i<j&&a[i]<pivot)
        {i++;}
        if(i<j){a[j]=a[i];j--;}
    }
    if(i==j){a[j]=pivot;}
    return j;
}
void quicksort(int a[],int low,int high)
{
    if(low>=high)
    {return ;}
    int j=partition(a,low,high);
    quicksort(a,low,j-1);
    quicksort(a,j+1,high);
}
int main( )
{
    int d[10000];
    int n;//length of array
    cin>>n;
    for(int i=0;i<n;i++) cin>>d[i];
    quicksort(d,0,n-1);
for(i=0;i<n;i++)

cout<<d[i]<<" ";
return 0;
}
2009-11-30 21:18
快速回复:【作业】快速排序
数据加载中...
 
   



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

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