我有份数据结构的课程设计报告已经发到你邮箱,请参考下吧,以下是代码部分
课程设计步骤简介
1.系统架构建模以及工具的选择
利用Microsoft Visio建模工具规划GUI,为后面的工具选择提供参照(如下图所示)。
2.调试核心排序算法
2.1插入排序算法
private void insertSort(int a[]){ //插入排序算法
for(int i=1;i
{int t=a[i];
for(int k=i;k>j;k--) //移动
a[k]=a[k-1];
a[j]=t;
}
}
}
2.2冒泡排序算法
private void bubbleSort(int[] shuzu) {
for(int j=0;j
if(shuzu[i]>shuzu[i+1]) //升序排序
{int temp=shuzu[i]; shuzu[i]=shuzu[i+1]; shuzu[i+1]=temp;} //交换
}
2.3快速排序算法
private void quickSort(int a[],int left,int right) {
if(left
int point=quick(a,left,right);
quickSort(a,point+1,right); //分割点右边排序
quickSort(a,left,point-1); //分割点左边排序
}
}
private static int quick(int[] arr,int left,int right){
int i,j,point,temp;
int[] array = arr; i=left; j=right;
point=array[left];//设置分割点
while(i
{ --j; }
array[i]=array[j];
while(i
array[j]=array[i];
} //换回分割点
array[i]=point;
return j;
}
2.4选择排序算法
private void choseSort(int a[]) {
int min,temp, len=a.length;
for (int i=0;i
min=i;
for (int j=i+1;j
{temp=a[i]; a[i]=a[min];a[min]=temp; }
}
}
2.5 合并排序算法
private void mergeSort(int a[],int p,int r) {
int q;
if(p!=r)
{ //若子序列A中不止一个元素
q=(int)((p+r-1)/2); //计算中间下标,将子序列A分为左子序列和右子序列
mergeSort(a,p,q); //对左子序列进行合并排序
mergeSort(a,q+1,r); //对右子序列进行合并排序
merge(a,p,q,r); //对左子序类和右子序列进行合并
}
}
private void merge(int z[],int p,int q,int r)
{ int temp1[]=new int[z.length];
int i,j,t;
t=p; //序列temp1的下标计数器,从p开始
i=p; //左子序A[P..Q]的下标计数器,从p开始
j=q+1; //右子序A[Q+1..R]的下表计数器,从q+1开始
//合并序列
while(t<=r)
if(i<=q&&(j>r||z[i]<=z[j]))
temp1[t++]=z[i++];
else
temp1[t++]=z[j++];
//将temp1中的序列赋值给A
for(i=p;i<=r;i++)
z[i]=temp1[i];
}
2.6二分插入排序算法
private void halfSort(int[] a) {
for (int i=1;i
int left=0,right=i-1;
int temp=a[i];
while(left<=right)
{
int middle=(left+right)/2;
if(temp right=middle-1;
else
left=middle+1;
}
for(int j=i-1;j>=left;j--)
a[j+1]=a[j];
a[left]=temp;
} }
3. 设计常产生随机数的算法
public int[] randdata(){
int choice=jComboBox1.getSelectedIndex();
int index[]={100,500,1000,5000};
int[] data=new int[index[choice]];
java.util.Random r=new java.util.Random(); //利用java产生随机数的函数
switch(choice){ //产生的随机数在0-4999之间
case 0: {
for(int i=0;i<100;i++) //产生100个随机数组
data[i]=Math.abs(r.nextInt())%5000; break;
}
case 1: {
for(int i=0;i<500;i++) //产生500个随机数组
data[i]=Math.abs(r.nextInt())%5000; break;
}
case 2: {
for(int i=0;i<1000;i++) //产生1000个随机数组
data[i]=Math.abs(r.nextInt())%5000; break;
}
case 3: {
for(int i=0;i<5000;i++) //产生5000个随机数组
data[i]=Math.abs(r.nextInt())%5000;
} }// end swhitch
return data; //回传产生的随机数组
已经发到你邮箱了。记得给分。
这个我也提问过 就是没人给回复。。。祝楼主好运吧