77范文网 - 专业文章范例文档资料分享平台

完全排序

来源:网络收集 时间:2020-05-30 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

#include #include #include #include #include #include #include #include #define MAXSIZE 1000 #define TRUE 1 #define FALSE 0 typedef int BOOL; typedef struct{ int key; } RedType; class LinkList {

public:

RedType r[MAXSIZE+1]; int Length;

int CmpNum, ChgNum; LinkList();

bool LT(int i, int j); void Display(); void Insert( int dk); void ShellSort();

int Partition( int low, int high); void QSort( int low, int high); void QuickSort();

void HeapAdjust( int s, int m); void HeapSort(); void BubbleSort();

int SelectMinKey( int k); void SelSort(); void SelectSort(); void AllAbove(); };

LinkList::LinkList(){ int i;

for (i = 0; i <= MAXSIZE; i++) r[i].key = rand()00; Length=MAXSIZE+1; CmpNum=0;

ChgNum=0; }

bool LinkList::LT(int i, int j){ (CmpNum)++; if (i < j)

return TRUE; else

return FALSE; }

void LinkList::Display() { int j; for(int i=0;i<=MAXSIZE;i++) { cout<

//插入排序

void LinkList::Insert(int dk){ int i, j;

RedType Temp;

for (i = dk; i < Length; i++) {

if (LT(r[i].key, r[i - dk].key)) {

memcpy(&Temp, &r[i], sizeof(RedType));

for (j = i - dk; j >= 0 && LT(Temp.key, r[j].key); j -= dk) {

(ChgNum)++;

memcpy(&r[j + dk], &r[j], sizeof(RedType)); }

memcpy(&r[j + dk], &Temp, sizeof(RedType)); } } }

//希尔排序

void LinkList::ShellSort() {

int t=Length+1; do{ t=t/3+1; Insert( t); }

while(t>1); }

//快速排序

int LinkList::Partition(int low, int high){ RedType Temp; int PivotKey;

memcpy(&Temp, &r[low], sizeof(RedType)); PivotKey = r[low].key; while (low < high){

while (low < high &&r[high].key >= PivotKey){ high--;

(CmpNum)++; }

(ChgNum)++;

memcpy(&r[low], &r[high], sizeof(RedType)); while (low < high && r[low].key <= PivotKey){ low++;

(CmpNum)++; }

(ChgNum)++;

memcpy(&r[high], &r[low], sizeof(RedType)); }

memcpy(&r[low], &Temp, sizeof(RedType)); return low; }

void LinkList::QSort( int low, int high){ int PivotLoc = 0; if (low < high){

PivotLoc = Partition( low, high); QSort(low, PivotLoc - 1); QSort( PivotLoc + 1, high); } }

void LinkList::QuickSort(){ QSort(0, Length - 1); }

//堆排序

void LinkList::HeapAdjust(int s, int m){ RedType Temp; int j = 0; s++;

memcpy(&Temp, &r[s - 1], sizeof(RedType)); for (j = 2 * s; j <= m; j *= 2){

if (j < m && LT(r[j - 1].key, r[j].key)) ++j;

if (!LT(Temp.key, r[j - 1].key)) break;

(ChgNum)++;

memcpy(&r[s - 1], &r[j - 1], sizeof(RedType)); s = j; }

memcpy(&r[s - 1], &Temp, sizeof(RedType)); }

void LinkList::HeapSort(){ int i = 0;

RedType Temp;

for (i = Length / 2-1; i >= 0; i--) HeapAdjust(i, Length); for (i = Length; i > 1; i--){

memcpy(&Temp, &r[0], sizeof(RedType)); (ChgNum)++;

memcpy(&r[0], &r[i - 1], sizeof(RedType)); memcpy(&r[i - 1], &Temp, sizeof(RedType)); HeapAdjust( 0, i - 1); } }

//冒泡排序

void LinkList::BubbleSort(){ int i, j;

RedType temp;

for (i = 1; i <= MAXSIZE; i++){

for (j = 1; j <= MAXSIZE - i; j++){ if (!LT(r[j].key, r[j + 1].key)){ (ChgNum)++;

memcpy(&temp, &r[j], sizeof(RedType)); memcpy(&r[j], &r[j + 1], sizeof(RedType)); memcpy(&r[j + 1], &temp, sizeof(RedType)); }

} } }

//选择排序

int LinkList::SelectMinKey( int i) {

int Min = i;

for (int k=i; k < Length; k++) {

if (!LT(r[Min].key, r[k].key)) Min = k; }

return Min; }

void LinkList::SelSort(){ int i, j;

RedType temp;

for (i = 0; i < Length; i++){ j = SelectMinKey( i); if (i != j){

(ChgNum)++;

memcpy(&temp, &r[i], sizeof(RedType)); memcpy(&r[i], &r[j], sizeof(RedType)); memcpy(&r[j], &temp, sizeof(RedType)); } } }

//4.3.3 排序算法的选择 void LinkList::SelectSort(){ cout<<\插入排序\ cout<<\希尔排序\ cout<<\快速排序\ cout<<\堆排序\ cout<<\冒泡排序\ cout<<\选择排序\ cout<<\以上各种排序\ cout<<\退出程序\

cout<<\请选择需要进行的操作:\}

void LinkList::AllAbove(){

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库完全排序在线全文阅读。

完全排序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1071346.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: