• 语文科
  • 数学科
  • 英语科
  • 政治科
  • 物理科
  • 化学科
  • 地理科
  • 历史科
  • 生物科
  • 中考备战
  • 高考备战
  • 高考试题
  • 中考试题
  • 当前位置: 天一资源网 > 算法 正文

    插入排序算法实验报告 排序算法实验总结

    时间:2020-08-25 12:59:37 来源:天一资源网 本文已影响 天一资源网手机站

     算法设计与分析基础

     实验报告

     应用数学学院

     二零一六年六月

     实验一 插入排序算法

     一、实验性质 设计

     二、实验学时 14学时

     三、实验目的1、掌握插入排序的方法和原理。

     2、掌握java语言实现该算法的一般流程。

     四、实验内容

     1、数组的输入。

     2、输入、输出的异常处理。

     3、插入排序的算法流程。

     4、运行结果的输出。

     五、实验报告

     Ⅰ、算法原理

      从左到右扫描有序的子数组,直到遇到一个大于(或小于)等于A[n-1]的元素,然后就把A[n-1]插在该元素的前面(或后面)。

      插入排序基于递归思想。

     Ⅱ、书中源代码

      算法 InsertionSort(A[0..n-1])

     //用插入排序对给定数组A[0..n-1]排序

      //输入:n个可排序元素构成的一个数组A[0..n-1]

      //输出:非降序排列的数组A[0..n-1]

      for i ← 1 to n-1 do

      v ← A[i]

      j ← i-1

      while j ≥ 0 and A[j] > v do

      A[j+1] ← A[j]

      j ← j-1

      A[j+1] ← v

     Ⅲ、Java算法代码:

     import java.util.*;

     public class Charu {

      public static void main(String[] args) {

      int n = 5;

      int a[] = new int[n];

      int s = a.length;

      int i = 0, j = 0, v = 0;

      System.out.println("请输入若干个数字:");

      Scanner sc = new Scanner(System.in);

      try {

      while (i < s) {

      a[i] = sc.nextInt();

      i++;

      }

      for (i = 1; i <s; i++) {

      v = a[i];

      j = i - 1;

      while (j >= 0 && a[j] > v) {

      a[j + 1] = a[j];

      j--;

      }

      a[j + 1] = v;

      }

      System.out.println("插入排序结果显示:");

      for (i = 0; i < s; i++) {

      System.out.println(a[i]);

      }

      } catch (Exception es) {

      System.out.println(es);

      }

     

      }

     }

     Ⅳ、运行结果显示:

      图(1) 图(2)

     Ⅴ、实验结论:

      插入排序的基本操作是键值比较A[j]>v。键值比较次数显然依赖于特定的输入,在最坏的情况下,插入排序与选择排序的键值比较次数是完全一致的。在最好的情况下,在外部循环的每次迭代中,比较次数只执行一次。插入排序的平均性能比最差性能快两倍,以及遇到基本有序的数组时表现出优异的性能,使得插入排序领先与选择排序和冒泡排序。

    相关关键词: 操作系统内存分配算法 程序算法描述流程图 银行家算法程序流程图 蚁群算法流程图 预算法实施管理条例
    相关热词搜索: 算法 插入 排序 实验 报告

    • 范文大全
    • 教案下载
    • 优秀作文
    • 励志
    • 课件
    • 散文
    • 名人名言