实现直接插入,冒泡,直接选择,快速,堆,归并和基数排序,比较各种排序算法...
发布网友
发布时间:2022-06-11 02:26
我来回答
共1个回答
热心网友
时间:2022-05-22 02:41
给你一个基数排序的代码 我自己写的
//Queue Begin
typedef struct _tQueueNode
{
int data;
struct _tQueueNode* next;
}QueueNode;
class Queue
{
public:
Queue(){head=NULL;rear=NULL;}
~Queue(){
QueueNode* p = head;
QueueNode* q;
while(p)
{
q=p->next;
delete p;
p=q;
}
}
void Enqueue(int data)
{
QueueNode* p = new QueueNode;
p->next=NULL;p->data = data;
if (rear)
this->rear->next = p;
else
head=p;
this->rear = p;
}
int Dequeue()
{
QueueNode* p = head;
if (!p)return -1;
if (rear ==p)
rear=NULL;
head = p->next;
int data = p->data;
delete p;
return data;
}
BOOL IsEmpty()
{
return (this->head==NULL);
}
private:
QueueNode* head;
QueueNode* rear;
};
//Queue End
///Radix Sort Begin
#define Radixs 10 // int4 max = 2147352578
void Distribute(Queue* q,int* data,int datasize,int Radix)
{
int i;int k;int j;
for( i=0;i<datasize;++i)
{
k = data[i];
for(j=1;j<Radix;++j) k=k/10;
k=k%10;
q[k].Enqueue(data[i]);
}
}
void Collect(Queue* q,int* data)
{
int i;int j=0;int dat;
for(i=0;i<10;++i)
{
while( !q[i].IsEmpty())
{
dat = q[i].Dequeue();
data[j++] = dat;
}
}
}
void RadixSort(int* data,int datasize)
{
int i;
Queue q[10];
for(i=1;i<=Radixs;i++)
{
Distribute(q,data,datasize,i);
Collect(q,data);
}
}
//Radix Sort End
各种排序算法
1、冒泡排序 2、选择排序 3、插入排序 4、希尔排序 5、归并排序 6、快速排序 7、堆排序 8、计数排序 9、桶排序 10、基数排序 排序算法包含的相关内容具体如下:冒泡排序算法 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较...
面试必会八大排序算法(Python)
希尔排序(Shell Sort)是插入排序的一种,也是缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法,时间复杂度为:O(1.3n)。希尔排序是基于插入排序的以下两点性质而提出改进方法的:·插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率;·...
排序算法的排序算法
插入排序冒泡排序选择排序快速排序堆排序归并排序基数排序希尔排序 插入排序是这样实现的:1、首先新建一个空列表,用于保存已排序的有序数列(我们称之为有序列表)。2、从原数列中取出一个数,将其插入有序列表中,使其仍旧保持有序状态。3、重复2号步骤,直至原数列为空。插入排序的平均时间复杂度为...
排序方法有哪几种 排序方法的相关知识
1、排序方法有10种,分别是:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序。2、冒泡排序算法是把较小的元素往前调或者把较大的元素往后调。这种方法主要是通过对相邻两个元素进行大小的比较,根据比较结果和算法规则对该二元素的位置进行交换,这样逐个...
c语言考试。问数组,常见的数组排序算法有那几种?选择一个描述过程。
有插入排序:直接插入排序、折半插入排序、希尔排序;交换排序:冒泡排序、快速排序;选择排序:简单选择排序、堆排序;归并排序;基数排序。常用冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面(数组由小到大排序)。即首先比较第1个和第2个数,将小数放前,大数放后。然后...
请给出java几种排序方法
4 归并类排序 将两个或两个以上的有序序列合并成一个新的序列 5 基数排序 主要基于多个关键字排序的。下面针对上面所述的算法,讲解一些常用的java代码写的算法 二 插入类排序之直接插入排序 直接插入排序,一般对于已经有序的队列排序效果好。基本思想:每趟将一个待排序的关键字按照大小插入到已经排序...
冒泡、直插、选择、快速、希尔、归并排序算法进行比较
所以,归并排序也是稳定的排序算法。(6)基数排序 基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序,最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。基数排序基于...
面试必会八大排序算法(Python)
2、希尔排序(ShellSort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。3、在Python中,Python算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。冒泡排序冒泡...
排序算法概述
十大排序算法:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序、希尔排序、计数排序,基数排序,桶排序 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定 :如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,...
实验题【实验四题目1】
使用简单数组实现下面各种排序算法,并进行比较。 排序算法: 1、插入排序 2、希尔排序 3、冒泡排序 4、快速排序 5、简单选择排序 6、堆排序(选作) 7、归并排序(选作) 8、基数排序(选作) 9、其他 要求: 1、测试数据分成三类:正序、逆序、随机数据 2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动...