本设计程序用C编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。实现三种排序算法-冒泡排序、快速排序、合并排序。产生四个长度为100,1000,10000,50000的随机数数组,分别用这三种排序算法对每个数组进行排序,并记录每种算法在排序所花费的计算机时间,并进行对比分析 ① 输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入
希尔排序思路:
1.选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1(最后必须是1)
2.按增量序列个数 k,对序列进行 k 趟排序代码实现:#include <iostream>
using namespace std;
template <typename T> //整數或浮點數皆可使用
void shell_sort(T*
#include"stdafx.h"#include<iostream>usingnamespacestd;template<typenameT>voidadjust(T*arr,intsign,intlen){Ttemp=arr[sign];//每一次循环都更新该父节点为根的完全二叉树最大堆for(inti=sign*2+1;i<len;i=i*2+1){if(i+
原创
精选
2018-01-26 13:17:09
3431阅读
点赞
插入排序:
就像摸牌,摸一张插进去,找一个哨兵。从第二个開始,和前一个比較。小的话前移一位。
#include <iostream>
#include<stdlib.h>
using namespace std;
#define N 4 //不能加分号结束
class sort
{
public:
void insertSort(int a[],in
转载
2017-08-01 11:24:00
107阅读
2评论
#include <iostream> using namespace std; #define MAX 10000000 #define MAX_VERTEX_NUM 20 /*顺序栈的定义*/ #define Stack_
代码: // Test_Console_3.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#inclu...
原创
2022-07-18 10:29:33
49阅读
/* 引入相应的c++库文件 */#include "stdio.h"#include "iostream.h"#include "string.h"#include "iomanip.h" /* 宏定义变量 */#define FILENAME_LENGTH
C++ 经常使用的数据结构之中的一个的链表,在我们的程序中是经常出现的了。我们学c语言的时候我就知道了 链表。開始它是基于一个机构体的。
我们创建链表的时候会返回一个链表头指针,这个头指针我们往往是作为一个全局变量来处理的。我们对于链表的操作方法是都是基于这个头指针的。依据头指针去查找,插入。删除,改动。这个请看这篇博文:http://blog.csdn.net/hizxc/
转载
2017-04-23 18:13:00
90阅读
(1)结构体定义节点 用结构体存每个链表每个节点存的数据和指向的下一个节点的地址。 (2)用结构体定义一个链表,存链表的头指针和长度。 (3)新增一个节点(尾插法),节点存的数据是dt (4)删除存的数据是num的节点 (5)找到存的数据是num的节点 (6)输出这个链表 (7)完整代码
转载
2019-11-21 20:21:00
83阅读
#include using namespace std;template struct Node{ T t; // struct Node *next;};template class LinkList{public: LinkList(); ~LinkList();pub...
转载
2015-09-13 01:22:00
50阅读
反转链表1(LeetCode 206.)class Solution {public: ListNode* reverseList(ListNode* head) { ListNode *new_head = NULL; while(head){ ListNode *next = head->next; head->next = new_head; new_head = hea.
原创
2021-06-07 17:31:46
193阅读
笔试,面试,C/C++,数据结构单链表排序(改进冒泡排序)
原创
2016-01-05 00:13:39
860阅读
简单插入排序适用于记录较少且基本有序的记录。算法思想:给定一个存在分界线的序列,分界线左边有序,右边无序,依次将右边的没排序的数与左边序列进行比较,插入相应位置,再对分界线做出相应调整,下面用图来说明。代码如下:时间复杂度:最好情况O(n),最坏O(n^2)。 希尔排序希尔排序是改进后的简单插入排序。算法思想:将序列分组排序,最后在进行一次简单插入排序。至于如何分组,下面我将用图向大家展
void bubblesort()
{
for (i=0;i<max;i++)
{
for(j=l;j>=i+1;j--)
if(a[j]<a[j-1]) //小则交换
{
a[0]=a[j];
a[j]=a[j-1];
a[j-1]=a[0];
}
}
}
转载
精选
2012-06-13 09:58:19
669阅读
<br /><br />/************************线索链表的实现*************************/<br />#include <iostream><br />using namespace std;<br /><
#include "head.h"#include "iostream.h"#include "string.h"
typedef char ElemType;
typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*Link;
class LinkList{private: Link
转载
精选
2007-06-22 10:41:15
975阅读
点赞
1评论
之前在学c的时候以c的版本谢了有关链表的最基础的几个函数,最近在学习C++,所以,,,哈哈就用另一种版本再次呈现给大家;感觉c++好像写起来比较简单一些。因为它有结构体,所以没有那么繁琐;cpp.h#pragma once#include<iostream>using namespace std;typedef int DataType; struct Node{ DataT
原创
2016-03-18 17:07:44
630阅读