以下是我用c语言实现的各种排序算法#pragma once;

#define MAXSIZE 20000

typedef int KeyType;

typedef char Infomation;

typedef int LESSTNAN;

typedef int ShellData[];

static const char info='0';

#ifndef _SDTLIB_H

#define _STDLIB_H

#include

#include

#endif

#ifndef _DEBUG_H

#define _DEBUG_H

#include

#include

#endif

#ifndef _TYPE_H

#define _TYPE_H

typedef struct

{

KeyType Key;

Infomation Other;

}Type;

#endif

typedef void(*Function)(Type);

#ifndef _LIST_H

#define _LIST_H

typedef struct

{

Type r[MAXSIZE + 1];

int Length;

}List;

#endif

#pragma once;

#include "stdafx.h"

void InitList(List &L);

void Random(List &L);

bool LessThan(LESSTNAN LParam,LESSTNAN WParam);

void InsertSort(List &L);

void ShellSort(List &L,ShellData Data,int DataLength);

void ShellInsert(List &L,int dk);

void BubbleSort(List &L);

void QuickSort(List &L, int Low, int High);

int Partition(List &L, int Low, int High);

void SelectSort(List &L);

int SelectMinKey(List &L, int Start);

void HeapSort(List &L);

void HeapAdjust(List &L, int s, int m);

void RadixSort(List &L);

Type* MergeSort(List &L);

void MergingSort(Type SR[], Type TR[], int s, int t);

void Merge(Type SR[], Type TR[], int i, int m, int n);

void ListTranverse(List &L,Function p_function);

bool IsType(List &L,int Length, KeyType param);

#include "SortList.h"

void InitList(List &L)

{

int i;

L.Length = 0;

for (i = 0; i

{

L.r[i].Key = 0;

L.r[i].Other = info;

}

}

void Random(List &L)

{

srand((unsigned)time(NULL));

int i=1;

while (i

{

int temp = rand();

if (IsType(L, i, temp) == false)

{

L.r[i].Key = temp;

i++;

}

}

L.Length = MAXSIZE;

}

bool IsType(List &L,int Length, KeyType param)

{

int i;

for (i = 1; i

{

if (L.r[i].Key == param)

return true;

}

return false;

}

bool LessThan(LESSTNAN LParam, LESSTNAN WParam)

{

if (LParam

return true;

else

return false;

}

void ListTranverse(List &L, Function p_function)

{

int i;

for (i = 1; i

{

(*p_function)(L.r[i]);

}

}

void InsertSort(List &L)

{

int i, j;

for (i = 2; i

{

if (LessThan(L.r[i].Key, L.r[i - 1].Key) == true)

{

L.r[0] = L.r[i];

L.r[i] = L.r[i - 1];

for (j = i - 2; LessThan(L.r[0].Key, L.r[j].Key); j--)

{

L.r[j + 1] = L.r[j];

}

L.r[j + 1] = L.r[0];

}

}

}

void ShellInsert(List &L, int dk)

{

int i, j;

for (i = dk + 1; i

{

if (LessThan(L.r[i].Key, L.r[i - dk].Key) == true)

{

L.r[0] = L.r[i];

for (j = i - dk; j>0 && LessThan(L.r[0].Key, L.r[j].Key); j -= dk)

{

L.r[j + dk] = L.r[j];

}

L.r[j + dk] = L.r[0];

}

}

}

void ShellSort(List &L, ShellData Data, int DataLength)

{

int i;

for (i = 0; i

{

ShellInsert(L, Data[i]);

}

}

void BubbleSort(List &L)

{

int i, j;

Type temp;

for (i = 1; i

{

for (j = 1; j

{

if (L.r[j].Key>L.r[j + 1].Key)

{

temp = L.r[j];

L.r[j] = L.r[j + 1];

L.r[j + 1] = temp;

}

}

}

}

void QuickSort(List &L, int Low, int High)

{

if (Low

{

int Piv = Partition(L, Low, High);

QuickSort(L, Low, Piv - 1);

QuickSort(L, Piv + 1, High);

}

}

int Partition(List &L, int Low, int High)

{

KeyType PivotKey = L.r[Low].Key;

Type temp;

while (Low

{

while (Low = PivotKey)

{

High--;

}

temp = L.r[Low];

L.r[Low] = L.r[High];

L.r[High] = temp;

while (Low

{

Low++;

}

temp = L.r[Low];

L.r[Low] = L.r[High];

L.r[High] = temp;

}

return Low;

}

void SelectSort(List &L)

{

int i,j;

Type temp;

for (i = 1; i

{

j = SelectMinKey(L, i);

if (i != j)

{

temp = L.r[i];

L.r[i] = L.r[j];

L.r[j] = temp;

}

}

}

int SelectMinKey(List &L, int Start)

{

KeyType temp=L.r[Start].Key;

int Min=Start;

while (Start

{

if (temp>L.r[Start].Key)

{

temp = L.r[Start].Key;

Min = Start;

}

Start++;

}

return Min;

}

void Merge(Type SR[], Type TR[], int i, int m, int n)

{

int k,j;

for (j = m + 1, k = i; i <= m&&j <= n; k++)

{

if (LessThan(SR[i].Key, SR[j].Key) == true)

TR[k] = SR[i++];

else

TR[k] = SR[j++];

}

while (i <= m)

{

TR[k] = SR[i];

i++;

k++;

}

while (j <= n)

{

TR[k] = SR[j];

j++;

k++;

}

}

void MergingSort(Type SR[], Type TR[], int s, int t)

{

if (s == t)

TR[s] = SR[s];

else

{

int m = (s + t) / 2;

MergingSort(SR, TR, s, m);

MergingSort(SR, TR, m + 1, t);

Merge(SR, TR, s, m, t);

}

}

Type* MergeSort(List &L)

{

Type * temp=new Type[MAXSIZE+1];

MergingSort(L.r, temp, 1, L.Length);

return temp;

}

void HeapAdjust(List &L, int s, int m)

{

Type RC = L.r[s];

int j;

for (j = 2 * s; j <= m; j *= 2)

{

if (j

j++;

if (LessThan(RC.Key, L.r[j].Key) == false)

break;

L.r[s] = L.r[j];

s = j;

}

}

void HeapSort(List &L)

{

int i;

Type temp;

for (i = L.Length / 2; i > 0; i--)

{

HeapAdjust(L, i, L.Length);

}

for (i = L.Length; i > 1; i--)

{

temp = L.r[1];

L.r[1] = L.r[i];

L.r[i] = temp;

HeapAdjust(L, 1, i - 1);

}

}

c语言实现各种排序,c语言实现各种排序算法相关推荐

  1. R语言可视化、编写自定义函数可视化水平排序条形图(horizontal bar plot)、自定义图像布局模仿经济学人杂志可视化效果、右侧添加标签数值图像方框、自定义背景色、水平条形图中间线条等

    R语言可视化.编写自定义函数可视化水平排序条形图(horizontal bar plot).自定义图像布局模仿经济学人杂志可视化效果.右侧添加标签数值图像方框.自定义背景色.水平条形图中间线条.网格线 ...

  2. R语言使用str_order函数和str_sort函数对字符向量进行排序(str_order返回字符串排序的次序值(索引)、str_sort返回排序后的字符串)

    R语言使用str_order函数和str_sort函数对字符向量进行排序(str_order返回字符串排序的次序值(索引).str_sort返回排序后的字符串) 目录

  3. R语言dplyr包arrage函数排序dataframe实战:单列排序、多列排序、自定义排序

    R语言dplyr包arrage函数排序dataframe实战:单列排序.多列排序.自定义排序 目录 R语言dplyr包arrage函数排序dataframe实战:单列排序.多列排序

  4. PTA 基础编程题目集 7-27 冒泡法排序 C语言

    PTA 基础编程题目集 7-27 冒泡法排序 C语言 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一 ...

  5. c语言文件归并问题_C语言 | 选择法对10个数排序

    例60:C语言实现用选择法对10个整数排序. 解析:选择排序思路如下,设有10个元素a[1]~a[10],将a[1]与a[2]~a[10],若a[1]比a[2]~a[10]都小,则不进行交换,即无任何 ...

  6. C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

    参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...

  7. 论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析

    笔记整理 | 吴林娟,天津大学硕士 来源:EMNLP2020 链接:https://www.aclweb.org/anthology/2020.findings-emnlp.265.pdf 动机 依赖 ...

  8. C语言 数组排序 – 快速法排序 - C语言零基础入门教程

    目录 一.简介 二.数组快速法排序原理 三.数组快速法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

  9. C语言 数组排序 – 插入法排序 - C语言零基础入门教程

    目录 一.简介 二.数组插入法排序原理 三.数组插入法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

  10. C语言 数组排序 – 选择法排序 - C语言零基础入门教程

    目录 一.简介 二.数组选择法排序原理 三.数组选择法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

最新文章

  1. js中let和var定义变量的区别
  2. Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?
  3. muduo之TimerQueue
  4. LeetCode Valid Sudoku
  5. django from组件 实现增加 删除 编辑(推荐用法)
  6. 关于-32768补码的问题
  7. 去小公司了解哪些工具?
  8. 数学和古典诗词的意境
  9. mysql5.7.20 sql mode_MySQL5.7中的sql_mode默认值带来的坑及解决方法
  10. mysql 查询密码 cmd
  11. paip.提升用户检验-----列表摘要
  12. 罗马数字java代码实现_6.2 罗马数字转整数
  13. 计算机网络显示正常 但无法上网怎么办,如何解决显示网络已连接但无法上网...
  14. 基于java汽车4S服务管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  15. OLTP 和 OLAP 的区别?
  16. vmware 下ubuntu共享主机文件
  17. 【java笔记-006】【uni-app】当前运行的基座不包含原生插件[xxx],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座
  18. 【转】在win10接双显示器(扩展模式)怎么把鼠标游标切换到第二台显示器上?
  19. 正则验证邮箱、8到16位数字字母特殊符号组合
  20. 写给迷茫期产品经理的一封信

热门文章

  1. “不翻身,就要翻船”!帆软独家:制造业数字化转型解决方案
  2. 初学者内心最慌的问题:适不适合做一名码农(程序员)??
  3. 别具一格的HAO3GP整站源码花坛
  4. ★(在人生的过程中我的65047777
  5. 莱比锡爆料:《星际争霸2》估计明年也没戏
  6. 除了要求app随手机壳颜色变之外,产品还要求....
  7. 阿里年薪40万老人简历:83岁精通网购,62岁会H5、PS
  8. python模块下载连接清华镜像的具体步骤_anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror...
  9. Adobe illustrator 图的放置和微调 - 连载 9
  10. 生信分析和统计绘图资源推荐!