范文无忧网计划总结工作总结

二叉树排序算法实现数据结构课程设计

02月26日 编辑 fanwen51.com

[请问一下有谁能总结数据结构中排序章内介绍各种算法的时间复杂]1.插入排序:每次将一个待排的记录插入到前面的已经排好的队列中的适当位置。 ①.直接插入排序 直接排序法在最好情况下(待排序列已按关键码有序),每趟排序只需作1次比较而不需要...+阅读

二叉树排序算法实现数据结构课程设计

#include #include #define NUM 7 //宏定义 int i; //变量类型定义 typedef struct Node{ int data ; //数据域 struct Node *next; //指针域 }Node,*LNode; //用结构体构造结点及相应的指针 typedef struct Tree{ int data ; struct Tree *left ; struct Tree *right ; }Tree,*LTree ; //用结构体构造树及相应的指针 CreateList( LNode Head ) //创建单链表 { for(int i=1 ; i <=NUM ; i++) //创建循环,依次输入NUM个数据 { LNode temp ; //中间结点 temp = (LNode) malloc( sizeof( Node ) ); //动态存储分配 temp-> next = NULL; //中间结点初始化 scanf("%2d",&temp-> data); //输入赋值到结点temp数据域 temp-> next = Head-> next ; Head-> next = temp ; //将temp结点插入链表 } return 1 ;//返回1 } InsertSqTree( LTree &root , LNode temp ) //二叉树排序原则的设定 { if(!root) //root为NULL时执行 { root = (LTree)malloc(sizeof(Tree)); //动态存储分配 root-> left =NULL; root-> right=NULL; //初始化 root-> data = temp-> data ; //赋值插入 return 1 ; //函数正常执行,返回1 } else { if(root-> data>= temp-> data) return InsertSqTree( root-> left , temp ) ; //比较插入左子树 else if(root-> data data) return InsertSqTree( root-> right , temp ); //比较插入右子树 } return 1 ; //如果满足,就不做处理,返回1 } void BianLiTree(LTree root) //采用中序遍历,实现将所有数字按从左向右递增的顺序排序 { if(root) //root不为空执行 {BianLiTree(root-> left); //左递归处理至叶子结点,当root-> left为NULL时不执行 printf("%4d ",root-> data); //输出 BianLiTree(root-> right); //处理右结点 } } int main() { LNode Head = NULL; LTree root = NULL ; //初始化 Head = (LNode) malloc(sizeof(Node)); //动态存储分配 Head-> next = NULL ; //初始化 printf("please input numbers:\n");//输入提示语句 if(!CreateList( Head )) //建单链表成功返回1不执行下一语句 return 0; //结束函数,返回0 LNode temp = Head-> next ; //将头指针的指针域赋值予中间结点 while( temp ) //temp为NULL时停止执行 { if(!InsertSqTree( root ,temp )) //排序正常执行,返回1不执行下一语句 return 0 ; //结束函数,返回0 Head-> next = temp-> next ; //将中间指针的指针域赋值予头结点指针域 free(temp); //释放空间 temp = Head-> next ; //将头指针的指针域赋值予中间结点,以上三句实现了temp指针后移 } printf("the result is:\n");//输出提示语句 BianLiTree(root); //采用中序遍历,输出并观察树结点 return 1; //函数正常结,返回1 }

C语言课程设计:shell排序堆排序快速排序归并递归和非递归

#include#include#include#includevoid shellSort(int *a,int len) { int step; int i,j; int temp; for(step=len/2; step>0;step/=2) { for(i=step;i=0 & temp0; i--) { heapify(a,n,i); } } void heap_sort(int a[],int n) { build_heap(a,n); for (int i=n; i>0; i--) { swap(&a[0],&a[i-1]); heapify(a,i-1,1); } } int partitions(int a[],long p,long q) { long i,j=p-1; for (i=p; i

数据结构课程设计内部排序算法时间的比较

用系统计时器算时间复杂度。#include#include#include#include#define LIST_INIT_SIZE 50000int bj1,yd1,n;clock_t start_t,end_t;typedef struct { int key; }ElemType;typedef struct { ElemType *elem; int length;}SqList;void addlist(SqList &L){ int i;a: printf("请输入你要输入的个数:"); scanf("%d",&n); if(n>50000) { printf("超出范围重新输入!!!\n"); goto a; } L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem)exit(0); L.length=0; for(i=1;i30000)goto b; ++L.length; }}void SelectSort(SqList &L)//选择{ start_t=clock(); int i,j,k,bj=0,yd=0; for(i=1;i

延伸阅读:

几种经典排序算法优劣比较的C程序实现一、低级排序算法1.选择排序 (1)排序过程 给定一个数值集合,循环遍历集合,每次遍历从集合中选择出最小或最大的放入集合的开头或结尾的位置,下次循环从剩余的元素集合中遍历找出...

数据结构堆排序算法#includevoid adjust(int *list,const int root,const int n); void HeapSort(int *list,const int n) { int i=0; for(i=n/2;i>=1;i--) adjust(list,i-1,n); int t=list[n]...

请问一下:有谁能总结数据结构中排序章内介绍各种算法的时间复杂1.插入排序:每次将一个待排的记录插入到前面的已经排好的队列中的适当位置。 ①.直接插入排序 直接排序法在最好情况下(待排序列已按关键码有序),每趟排序只需作1次比较而不需要...

C语言实现七种排序算法的演示代码!(1)“冒泡法” 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。下面列...

急!C语言程序数据结构排序算法的问题#include"stdio.h" #include"stdlib.h" #include "string.h" #define Max 100 //假设文件长度 typedef struct{ //定义记录类型 int key; //关键字项 }RecType; typedef RecType Se...

排序算法c语言n个数字的排序我近期做练习的时候专门为排序做了一个c程序,你看看怎么样,包括了很多排序方法 #include#include#include#define LEN 10 //初始化数组 void init(int *arr,int len); //打印数...

排序算法的排序算法排序的算法有很多,对空间的要求及其时间效率也不尽相同。下面列出了一些常见的排序算法。这里面插入排序和冒泡排序又被称作简单排序,他们对空间的要求不高,但是时间效率却不稳...

请问一下:有谁能总结数据结构中排序章内介绍各种算法的时间复杂1.插入排序:每次将一个待排的记录插入到前面的已经排好的队列中的适当位置。 ①.直接插入排序 直接排序法在最好情况下(待排序列已按关键码有序),每趟排序只需作1次比较而不需要...

数据结构的排序怎么比较时间LARGE_INTEGER litmp; LONGLONG qt1,qt2; double dft,dff,dfm;QueryPerformanceFrequency(&litmp);//获得时钟频率 dff=(double)litmp.QuadPart; QueryPerformanceCounter(&l...

推荐阅读
图文推荐
栏目列表