JAVA 4种算法的比较

把c语言改成JAVA,要求完整的。我是新手!各位大大!

#ifndef sort_h //(作用:防止h被重复引用)
#define sort_h
#include <iostream>
using namespace std;
void slook(int*main,int len)
{
for(int i=0;i<len;i++)cout<<main[i]<<" ";
cout<<endl;
}

//冒泡排序
void bb_sort( int*main,int len)
{
int temp;
for(int j=0;j<len;j++)
{
for(int i=0;i<len-j-1;i++)
{
if(main[i]>main[i+1])
{
temp=main[i];
main[i]=main[i+1];
main[i+1]=temp;
}
}
}
}
//直接插入排序
void insert_sort(int *main,int len)
{int temp;
for(int j=1;j<len;j++)
{
for(int i=j;i>0;i--)
if(main[i]<main[i-1])
{
temp=main[i-1];
main[i-1]=main[i];
main[i]=temp;
}
}
}
//折半插入排序
void bi_insert_sort(int *main,int len)
{
int temp;
for(int j=1;j<len;j++)
{
for(int i=j;i>0;i--)
{
if(main[i]<main[i-1])
{
int head=0;
int rear=i;
for(int mid;head<rear;)
{
mid=(rear+head)/2;
if(main[mid] >=main[i]) rear=mid;
else head=mid+1;
}
temp=main[i];
int k=i;
for(;k>head;k--)
{
main[k]=main[k-1];
}
main[head]=temp;
}}
}

}
//快速里分二分之一的程序段
int partition(int *main,int low,int high)
{
main[0]=main[low];
int e=main[low];
while(low<high)
{
while(low<high && main[high]>=e)--high;
main[low]=main[high];
while(low<high && main[low]<=e)++low;
main[high]=main[low];
}
main[low]=main[0];
return low;
}
//快速排序
void kqsort(int *main,int low,int high)
{
if(low<high)
{
int e=partition(main,low,high);
kqsort(main,low,e-1);
kqsort(main,e+1,high);
}
}

bool sort()
{
cout<<endl<<"~~~~欢迎进入排序~~~"<<endl;
int len;
int *main;
cout<<endl<<"请输入元素个数"<<endl;
cin>>len;
error(len);
main=(int*)malloc(len*sizeof(int));
for(int i=0;i<len;i++)
{
cout<<"请输入第"<<i+1<<"个元素的数值:"<<endl;
cin>>main[i];
error(main[i]);
}
int menu=-1;
while(menu!=0)
{

cout<<"查看原数组,请按-->1"<<endl;
cout<<"进入“直接插入排序”请按-->2"<<endl;
cout<<"进入“折半插入排序”请按-->3"<<endl;
cout<<"进入“冒泡排序”请按-->4"<<endl;
cout<<"进入“快速排序”请按-->5"<<endl;
cout<<"随机生成3000个元素判断查找速度,请按-->6"<<endl;
cout<<"退出请按-->0"<<endl;
cin>>menu;
error(menu);
cout<<endl;
if(menu>6||menu<0)cout<<endl<<"\a您输入错误,请重新输入"<<endl<<endl;

else{

switch(menu)
{
case 1:
slook(main,len);
break;
case 2:
insert_sort(main,len);
slook(main,len);
break;
case 3:
bi_insert_sort(main,len);
slook(main,len);
break;
case 4:
bb_sort(main,len);
slook(main,len);
break;
case 5:
int* mai=(int*)malloc((len+1)*sizeof(int));
for(int i=len+1;i>1;i--)mai[i]=main[i-1];
kqsort(mai,0,len);
slook(mai,len);
for(int i=len+1;i>1;i--)main[i-1]=mai[i];

}
}}

return 0;
}
#endif
我是要做课程设计的,但是只能是JAVA的,那些直接调用什么的,我不懂啊!大大我是新手啊!!

第1个回答  2009-12-01
搞算法干吗,直接调方法就行了
第2个回答  2009-12-02
java中有直接排序的函数,不用自己写啊,为什么要麻烦自己呢?在前面写上
import java.util.*.java然后排序的时候调用sort函数就可以了
相似回答