数据结构与算法(十一) 排序算法一

int nArray[] = { 8,5,3,2,7 };如下一个数组,现对其进行从小到大排序

选择排序

选择排序:将小的依次放在前面

具象化如下:

void swap(int *nSValue,int *nDValue) 交换函数

{

int nTempValue = 0;

nTempValue = *nSValue;

*nSValue = *nDValue;

*nDValue = nTempValue;

}

void selectSort(int *pArr, int nCount) 选择排序 将大的放在后面

{

for (size_t i = 0; i < nCount - 1; i++) 遍历4次即可

{

int nMix = pArr[i]; 设置最小值临时变量

for (size_t j = i; j < j++) 当i=0时,会打印不变,课后思考

{

if (pArr[j] < nMix)

{

swap(&pArr[j], &nMix);

}

}

if (nMix != pArr[i])

{

swap(&pArr[i], &nMix);

}

}

}

冒泡排序

冒泡排序 默认第一个元素已排序,其他未排序,将已排序元素从前之后依次比对插入合适位置

具象化如下:

void bubbleSort(int *pArr, int nCount)

{

for (size_t i = 0; i < nCount -1; i++)

{

for (size_t j = 0; j < nCount - 1 - i; j++)

{

if (pArr[j] > pArr[j + 1])

{

swap(&pArr[j], &pArr[j + 1]);

}

}

}

}

插入排序

插入排序:默认第一个元素已排序,其他未排序,将已排序元素从前之后依次比对插入合适位置

具象化如下:

void InsertioSort(int *pArr, int nCount)

{

for (size_t i = 1; i < nCount; i++)

{

int nValue = pArr[i];

int nIndex = i - 1;

while (nIndex >=0&&pArr[nIndex] > nValue)

{

pArr[nIndex + 1] = pArr[nIndex];

nIndex--;

}

pArr[nIndex + 1] = nValue;

}

}

希尔排序

void ShellSort(int *pArr, int nCount)

{

int nInterval = 1;

while (nInterval < nCount)

{

nInterval = 3 * nInterval + 1;

}

while (nInterval > 0) 如下同插入排序

{

for (size_t i = nInterval; i < nCount; i++)

{

int nValue = pArr[i];

int nIndex = i - nInterval;

while (nIndex >= 0 && pArr[nIndex] > nValue)

{

pArr[nIndex + nInterval] = pArr[nIndex];

nIndex = nIndex - nInterval;

}

pArr[nIndex + nInterval] = nValue;

}

nInterval = nInterval / 3;

}

}

void print(int *pArr,int nCount) 打印数组

{

for (size_t i = 0; i < nCount; i++)

{

std::cout << pArr[i] << "\t";

}

std::cout << std::endl;

}

相关推荐
cpp_25012 小时前
P1024 [NOIP 2001 提高组] 一元三次方程求解
数据结构·c++·算法·题解·二分答案·洛谷·csp
田梓燊8 小时前
力扣:23.合并 K 个升序链表
算法·leetcode·链表
re林檎9 小时前
算法札记——4.27
算法
AI人工智能+电脑小能手9 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
数据牧羊人的成长笔记9 小时前
逻辑回归与Softmax回归
算法·回归·逻辑回归
郑州光合科技余经理10 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
Mrlxl.cn12 小时前
计算机网络——网络层
c语言·数据结构·计算机网络·考研
d111111111d13 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
寒秋花开曾相惜13 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
Jiangxl~14 小时前
IP数据云如何为不同行业提供精准IP查询与风险防控解决方案?
网络·网络协议·tcp/ip·算法·ai·ip·安全架构