数据结构排序算法(一):排序方法分类和各种排序方法的实现

本文旨在深入理解各种排序算法,包括插入排序、选择排序、希尔排序、冒泡排序、快速排序、堆排序、归并排序和基数排序。通过编程实现这些算法并分析它们的时间复杂度,以比较不同排序方法的效率。实验要求在C++或C语言中完成这些排序算法的代码,并使用特定数据文件进行测试和性能比较。
摘要由CSDN通过智能技术生成

一、 实验目的

1. 掌握各种常用排序的算法思想;

2. 掌握各种常用排序的算法实现;

3. 掌握各种常用排序时间复杂度,比较各种排序的优缺点。

二.排序算法的归类:

总的排序算法分为以下几类:

1.插入类排序:如:直接插入排序,折半插入排序,希尔排序

2.交换类排序:如:冒泡排序,快速排序,其中冒泡排序应该是计算机专业的学生最为熟悉的一种排序算法了,而快速排序则是在冒泡排序的基础上一次消除多个逆序对改进而来

3.选择类排序:如:简单选择排序,堆排序。

4.其它类排序:如:归并排序,基数排序等。


三、 实验内容与要求

1. 编程实现各种排序算法,并对比各种算法的效率。

【设计要求】在给出的代码素材sort.cpp文件中补充main函数中的swtich语句,以及以下排序函数,并比较各种排序方法在对素材文件中的1.data~5.data待排序序列进行排序时所需要的时间。

void shellsort(int data[],int n);//希尔排序

void bubllesort(int data[],int n);//冒泡排序

void quicksort(int data[],int n);//快速排序

void selectsort(int data[],int n);//简单选择排序

void heapsort(int data[],int n);//堆排序

void mergesort(int data[],int n);//合并排序

void radixsort(int data[],int n) ;//基数排序

2.【程序代码】完成createdata函数及排序函数,其中createdata可参考下图,其中往目标文件中写入两部分内容,随机数的总个数及产生各个随机数。


方法一:C++

1. sort.h

#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
const int LineLenght=20;//控制屏幕打印时,每行元素个数 
class sort
{
	private:
		int *data,n;
	public:
		void Printdata();
		void Getdata(string file);
		void creatdata(int num);
		void Outputdata(); 
		void insertsort();//直接插入排序 
		void shellsort();//希尔排序 
		void bubllesort();//冒泡排序 
		void quicksort(int low, int high);//快速排序
		void selectsort();//简单选择排序
		void heapsort();//堆排序
		void sift(int start,int endnode);
		void mergesort();//合并排序
		void merge(int low, int high,int temp[]);
		void radixsort();//基数排序
};

2. sort.cpp



#include<iostream>
#include<fstream>
#include<stdlib.h>
#include"sort.h"
using namespace std;
//======打印=============================================================
void sort::Printdata( )
{
	 for(int i=1;i<=n;i++)
	{
     cout<<data[i]<<" ";
	   if(i%LineLenght==LineLenght-1)
	     cout<<endl;
    } 
   cout<<endl;	 
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值