——【数据结构】|【数据结构实验八】排序

版权申明:
本实验的实验目的,实验内容,实验要求归东北大学所有,未经许可禁止转载。



实验八 排序
实验目的:
掌握直接插入排序算法;理解其算法原理和适用情况。

实验内容:
1. 构建一个数组,包含N个待排序的数据;
【——【数据结构】|【数据结构实验八】排序】2. 0号单元不用,用于存放监视哨;
3. 通过比较和移动实现数据排序,并输出;
4. 估计算法的时间复杂性。
源码:

#include "stdafx.h" #include using namespace std; #define MAXSIZE 100typedef struct{ int r[MAXSIZE + 1]; int length; }SSTable; /******初始化表******/ int InitTable(SSTable *L){ L = (SSTable*)malloc(sizeof(SSTable)); if(!L) exit(OVERFLOW); L->length = 0; return OK; }/******创建表******/ int CreateTable(SSTable *L, int n){ int e, i; printf("请输入元素:\n"); for(i = 1; i <= n; i++){ scanf("%d", &e); L->r[i] = e; } L->length = n; return OK; }int LT(int i, int j){ if(i >= j) return 0; else return 1; }int EQ(int i, int j){ if(i == j) return 1; else return 0; }/******打印表******/ int PrintTable(SSTable *L){ int i; for(i = 1; i <= L->length; i++){ printf("%3d", L->r[i]); } return OK; }/******查找******/ int Search_Bin(SSTable *L, int key){ int low, high, mid; low = 1; high = L->length; while(low <= high){ mid = (low + high) / 2; if(EQ(key, L->r[mid])) return mid; else if(LT(key, L->r[mid])) high = mid - 1; else low = mid + 1; } } int main() { SSTable L; int n, key, location; InitTable(&L); printf("请输入元素个数:\n"); scanf("%d", &n); CreateTable(&L, n); printf("表为:\n"); PrintTable(&L); printf("\n******查找表******\n"); printf("请输入key:\n"); scanf("%d", &key); location = Search_Bin(&L, key); printf("\n位置为:%d\n", location); return 0; }




运行结果:
——【数据结构】|【数据结构实验八】排序
文章图片


    推荐阅读