数据结构Java(一)实验七 排序方法的综合实现

实验七  排序方法的综合实现

一、实验目的

1.掌握各种排序方法的基本思想、排序过程、算法实现,能进行时间和空间性能的分析,根据实际问题的特点和要求选择合适的排序方法。

2.学会比较各种排序方法的稳定性分析以及在最好、最坏和平均情况的时间性能分析。

二、实验环境

⒈ 硬件:每个学生需配备计算机一台。操作系统: Windows;

⒉ 软件: Windows操作系统+ MYEPLIPS;

三、实验要求及实验内容

1.采用顺序表实现直接插入排序、简单选择排序、冒泡排序、快速排序算法。

2.采用链表实现直接插入排序、简单选择排序。

3. 比较各种算法的运行速度。

4. 输入数据:数据域(data)设定为整型。以关键字序列(265,301,751,129,937,863,742,694,76,438)作为输入数据,采用上述方法进行排序。

实现程序

1.SqListSortClass.java

class RecType{//顺序表元素类型
    int key;
    String data;
    public RecType(int d){
        key=d;
    }
}
public class SqListSortClass {
    final  int MAXN=100;
    RecType[] R;
    int n;
    public void CreateR(int[] a){//由关键字序列a构造顺序
        R=new RecType[MAXN];
        for (int i=0;i<a.length;i++){
            R[i]=new RecType(a[i]);
        }
        n=a.length;
    }
    public void Disp(){//输出顺序表
        for (int i=0;i<n;i++){
            System.out.print(R[i].key+" ");
        }
        System.out.println();
    }
    public void swap(int i,int j){
        RecType tmp=R[i];
        R[i]=R[j];
        R[j]=tmp;
    }
    public void  InserSort(){
        RecType tmp;
        int j;
        for(int i=1;i<n;i++){
            if (R[i].key<R[i-1].key){
                tmp=R[i];
                j=i-1;
                do {
                    R[j+1]=R[j];
                } while (j>=0 && R[j].key>tmp.key);
                R[j+1]=tmp;
            }
        }
    }
    public void  BubbleSort(){ //对R[e.n-1]按递增有序进行冒泡排序
        boolean exchange=false;
        for (int i=0;i<n-1;i++){
            exchange=false;
            for (int j=n-1;j>i;j--){
                if (R[j].key<R[j-1].key){
                    swap(j,j-1);
                    exchange=true;
                }
            }
            if (!exchange){
                 return;
            }
        }
    }
    public int Partition(int s,int t){//划分算法
        RecType base=R[s];//以表首元素为基准
        int i=s,j=t;
        while (i<j){
            while (i<j&&R[j].key>base.key){
                j--;
        }
            swap(i,j);
            while (i<j&&R[i].key>base.key){
                i++;
            }
            swap(i,j);
        }
        return i;
    }
    public void QuickSort(){
        Quicksort1(0,n-1);
    }
    public void Quicksort1(int s,int t){
        if (s<t){
            int i=Partition(s,t);
            Quicksort1(s,i=1);
            Quicksort1(i+1,t);
        }
    }
    public void SelectSort(){
        RecType tmp;
        for (int i=0;i<n-1;i++){
            int minj=i;
            for (int j=i+1;j<n;j++){
                if (R[j].key<R[minj].key){
                    minj=j;
                }
            }
            if (minj!=i){
                swap(i,minj);
            }
        }
    }
}

2.test.java

public class test {
    public  static  void main (String args[]){
        int b[]={1,2,3,4,5};
        SqListSortClass xx=new SqListSortClass();
        xx.CreateR(b);
        System.out.println("the table is");
        xx.Disp();
        System.out.println("插入排序后是");
        xx.Disp();
        xx.InserSort();
        int c[]={88,77,66,55,44};
        xx.CreateR(c);
        System.out.println("the table is");
        xx.Disp();
        xx.InserSort();
        System.out.println("直接插入排序后");
        xx.Disp();
        int d[]={33,21,15,76,93};
        xx.CreateR(d);
        System.out.println("the table is");
        xx.Disp();
        xx.BubbleSort();
        System.out.println("冒泡排序后");
        xx.Disp();
        int e[]={45,72,12,3,6,87};
        xx.CreateR(e);
        System.out.println("the table is");
        xx.Disp();
        xx.SelectSort();
        System.out.println("选择排序后");
        xx.Disp();
        int f[]={23,33,54,11,4};
        xx.CreateR(f);
        System.out.println("the table is");
        xx.Disp();
        xx.QuickSort();
        System.out.println("快速排序后");
        xx.Disp();
    }
}

运行结果

测试

通过!

四、报告要求

1.报告要求用专门的实验报告纸书写,字迹清晰,格式规范。

2.报告中应写清姓名、学号、实验日期、实验题目、实验目的、实验要求。

3.报告中应书写源程序,且源程序中要有注释。

4.报告中应包含运行结果及结果分析。如调试通过,请注明‘通过’并写出输入的数据及运行结果;如未调试通过或结果不正确,试分析原因。

5.报告最后包含实验总结和体会。

五、对综合性实验的说明

    实验七是一个综合性的实验,综合了直接插入排序、简单选择排序、快速排序等多种排序等多个知识点,以及顺序和链式两种存储结构的设计及操作的实现。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值