数据结构实验十五 插入排序

简介: 数据结构实验十五 插入排序

一、实验目的

  1. 掌握在数组上进行各种排序的方法和算法。
  2. 深刻理解各种方法的特点,并能灵活应用。
  3. 加深对排序的理解,逐步培养解决实际问题的编程能力。

二、实验内容

1. #include <iostream>
2. using namespace std;
3. #define  MAXSIZE  20                     //顺序表的最大长度
4. typedef struct
5. {
6.  int key;
7.  char *otherinfo;
8. }ElemType;
9. //顺序表的存储结构                         
10. typedef struct
11. {
12.     ElemType *r;                      //存储空间的基地址
13.     int  length;                        //顺序表长度
14. }SqList;                      //顺序表类型
15. 
16. void InsertSort(SqList &L)
17. {
18.   int i,j; 
19. //对顺序表L做直接插入排序
20.   for(i=2;i<=L.length;++i)
21.   if(L.r[i].key<L.r[i-1].key)
22.   {
23.     L.r[0]=L.r[i];
24.     L.r[i]=L.r[i-1];
25.     for(j=i-2;L.r[0].key<L.r[j].key;--j)
26.     L.r[j+1]=L.r[j];
27.     L.r[j+1]=L.r[0];
28.     }}  //补充代码                                          
29. void Create_Sq(SqList &L)
30. {
31.   int i,n;
32.   cout<<"请输入数据个数,不超过"<<MAXSIZE<<"个。"<<endl;
33.   cin>>n;                     //输入个数
34.   cout<<"请输入待排序的数据:\n";
35.   while(n>MAXSIZE)
36.   {
37.     cout<<"个数超过上限,不能超过"<<MAXSIZE<<",请重新输入"<<endl;
38.     cin>>n;
39.   }
40.   for(i=1;i<=n;i++)
41.   {
42.     cin>>L.r[i].key;
43.     L.length++;
44.   }
45. }
46. void show(SqList L)
47. {
48.   int i;
49.   for(i=1;i<=L.length;i++)
50.     cout<<L.r[i].key<<endl;
51. }
52. 
53. int  main()
54. {
55.   SqList L;
56.   L.r=new ElemType[MAXSIZE+1];
57.   L.length=0;
58.   Create_Sq(L);
59.   InsertSort(L);
60.   cout<<"排序后的结果为:"<<endl;
61.   show(L);
62.   return 0;
63. }
目录
相关文章
|
3月前
|
存储 算法 数据安全/隐私保护
【Python学习篇】Python实验小练习——高级数据结构(五)
【Python学习篇】Python实验小练习——高级数据结构(五)
53 1
|
3月前
|
存储 算法 数据挖掘
数据结构实验||约瑟夫环
数据结构实验||约瑟夫环
|
2月前
|
搜索推荐 测试技术
【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】
【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】
|
3月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
3月前
|
算法 搜索推荐
数据结构与算法-插入排序
数据结构与算法-插入排序
25 2
|
4月前
|
存储 搜索推荐 算法
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
|
4月前
|
存储 算法
数据结构实验(四)二叉树的基本操作
数据结构实验(四)二叉树的基本操作
|
3月前
|
人工智能 算法 C语言
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
31 0
|
3月前
|
存储 搜索推荐
深入了解数据结构第四弹——排序(1)——插入排序和希尔排序
深入了解数据结构第四弹——排序(1)——插入排序和希尔排序
24 0
|
4月前
|
C语言
【C语言/数据结构】排序(直接插入排序|希尔排序)
【C语言/数据结构】排序(直接插入排序|希尔排序)
30 4