| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 425 人关注过本帖
标题:那位好友帮忙看一下这个程序那不合适,我怎么样都改不掉它的错误。
只看楼主 加入收藏
快乐小车车
Rank: 1
等 级:新手上路
帖 子:10
专家分:3
注 册:2012-2-29
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:1 
那位好友帮忙看一下这个程序那不合适,我怎么样都改不掉它的错误。
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
//简单选择排序
template<class T>
void SelectSort(T A[],int n)
{
int small;
for(int i=0;i<n-1;i++)
{
small;
for(int j=i+1;j<n;j++)
if(A[j]<A[small])
small=j;
if(i!=small)
Swap(A[i],A[small]);
}
}
//直接插入排序
template<class T>
void InsertSort(T A[],int n)
{
for(int i=0;i<n;i++)
{
int j=i;
T temp=A[i];
while(j>0;&&temp<A[j-1]){
A[j]=A[j-1];
j--;}
A[j]=temp;
}
}
//冒泡排序
template<class T>
void BubbleSort(T A[], int n) {
    int i,j,last;
    i=n-1;
    while ( i>0 ) {
    last=0;
        for(j=0; j<i; j++)
                  if (A[j+1]<A[j]){
                 Swap(A[j],A[j+1]);
                 last=j;
                }
        i=last;
     }//endwhile
//快速排序
template <class T>
void QuickSort(T A[],int n) {
     QSort(A,0,n-1);
}

template <class T>
void QSort(T A[],int left,int right){
     int i,j;
     if ( left<right ) {
          i=left;  j=right+1;
          do{
               do i++;  while (A[i]<A[left]);
      do j--;  while (A[j]>A[left]);
      if (i<j) Swap(A[i],A[j]);
 }while (i<j);
 Swap(A[left],A[j]);
 QSort(A,left,j-1);   QSort(A,j+1,right);
}//endif
}
//两路合并排序
template <class T>
void Merge(T A[], int i1, int j1, int i2, int j2) {
           T *Temp=new T[j2-i1+1];
           int i=i1, j=i2, k=0;
           while (i<=j1 && j<=j2) {
                   if (A[i]<=A[j]) Temp[k++]=A[i++];
             else Temp[k++]=A[j++];
     }
    while (i<=j1) Temp[k++]=A[i++];  //剩余部分存入temp
    while (j<=j2) Temp[k++]=A[j++];
    for(i=0; i<k; i++) A[i1++]=Temp[i];
    delete[] Temp;
}

template <class T>
void MergeSort(T A[], int n){
    int i1,j1,i2,j2
    int size=1;
    while ( size<n ) {
          i1=0;
          while ( i1+size<n ) {
               i2=i1+size;  j1=i2-1; //确定子序列的长度
   if (i2+size-1>n-1) j2=n-1;
   else j2=i2+size-1;
   Merge(A,i1,j1,i2,j2);
   i1=j2+1;
}
  size *=2;  //子序列长度增加2倍
}//endwhile
}
//堆排序
template <class T>
void AdjustDown(T A[], int r, int j)      
{  
    int child=2*r+1;
    T temp=A[r];        
    while(child<=j) {
    if((child<j)&&(A[child]<A[child+1]))                     child++;
    if (temp>= A[child]) break;
            A[(child-1)/2]=A[child];
            child=2*child+1;
    }
    A[(child-1)/2]=temp;
}
template <class T>
void HeapSort(T A[], int n)
{
   for(int i=(n-2)/2; i>-1; i--)
         AdjustDown(A,i,n-1);
   for(i=n-1; i>0; i--){
         Swap(A[0],A[i]);
         AdjustDown(A,0,i-1);
   }
}
void mian()
{
int A[20];
int i,k,B=1;
cout<<"运行结果:\n";
srand(time(0));
cout<<"排序前数组:\n";
for(i=1;i<=20;i++)
{
A[i]=rand()%100;
cout<<A[i]<<" ";
}
while(B)
{
cout<<" \n 请输入选择(1--6)";
cout<<"1:简单选择排序  2:直接插入排序\n";
cout<<"3:冒泡排序      4:快速排序\n";
cout<<"5:两路合并排序   6:堆排序\n";
cout<<"7:退出\n";
cout<<"选择数k:";
cin>>k;
if(k<0||k>7)
cout<<"输入选择错误,请重新输入!\n";
switch(k)
{
case 1:SelectSort(A[20],i);break;
case 2:InsertSort(A[20],i);break;
case 3:BubbleSort(A[20],i);break;
case 4:QuickSort(A[20],i);break;
case 5:MergeSort(A[20],i);break;
case 6:HeapSort(A[20],i);break;
case 7:return;

}
cout<<"排序后的数组是:\n";
for(i=1;i<=20;i++)
cout<<A[i]<<" ";
cout<<endl;
}
getch();
}

}
搜索更多相关主题的帖子: void 怎么样 include 
2012-05-26 21:32
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
好长,好乱。不忍心看

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-05-28 22:05
快速回复:那位好友帮忙看一下这个程序那不合适,我怎么样都改不掉它的错误。
数据加载中...
 
   



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

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