当前位置:网站首页>插入排序,选择排序,冒泡排序
插入排序,选择排序,冒泡排序
2022-07-04 19:56:00 【冬雪如春】
1.插入排序
大白话理解原理:将第一个数看成是有序的,从第二个数开始和该数前面的数进行比较,(默认从小到大排序)如果这个数比前一个数小,那么就将这个数,放在一个临时变量中,再进行相同的操作,知道发现前一个数币这个数小就将这个数放在比他小的那个数的后面。
#include <stdio.h>
void InsertSort(int array[], int len)
{
int i;
int j;
int temp;
for(i = 1; i < len; i++)
{
if(array[i] < array[i-1])
{
temp = array[i];
for(j = i - 1; j >= 0 && array[j] > temp; j--)
{
array[j+1] = array[j];
}
array[j+1] = temp;
}
}
}
void print(int array[], int len)
{
for(int i = 0; i < len; i++)
{
printf("%d ",array[i]);
}
}
int main()
{
int array[10] = {23,1,3,54,32,4,56,0,34,8};
print(array, 10);
printf("\n");
InsertSort(array, 10);
print(array, 10);
return 0;
}
2.选择排序
选择排序就是从一组数据的第一个数开始,在数组中下标是从0开始,将第一个数的位置记录下来,在一个一个与后面的数进行比较,如果后面有比这个数还小的数,那么就将这个数的位置与之前记录的数的位置更换,一直这样比较到最后一个数,然后将这个最小的数放在排好序的数据的后面,一次类推。排完序的就可以不用比较了,从还未排序的位置开始往后比较。
#include <stdio.h>
void SelectionSort(int array[], int len)
{
int i,j,k,temp;
for(i = 0; i < len; i++)
{
k = i;
for(j = i + 1; j < len; j++)
{
if(array[j] < array[k])
{
k = j;
}
}
temp = array[k];
array[k] = array[i];
array[i] = temp;
}
}
void print(int array[], int len)
{
for(int i = 0; i < len; i++)
{
printf("%d ",array[i]);
}
}
int main()
{
int array[10] = {23,1,3,54,32,4,56,0,34,8};
print(array, 10);
printf("\n");
SelectionSort(array, 10);
print(array, 10);
return 0;
}
3.冒泡排序
#include <stdio.h>
void BubbleSort(int array[], int len)
{
int i,j,k,temp;
for(i = 0; i < len; i++)
{
for(j = 0; j < len - i - 1; j++)
{
if(array[j] > array[j+1])
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
void print(int array[], int len)
{
for(int i = 0; i < len; i++)
{
printf("%d ",array[i]);
}
}
int main()
{
int array[10] = {
23,1,3,54,32,4,56,0,34,8};
print(array, 10);
printf("\n");
BubbleSort(array, 10);
print(array, 10);
return 0;
}
边栏推荐
- 实战模拟│JWT 登录认证
- 记一次重复造轮子(Obsidian 插件设置说明汉化)
- Browser render page pass
- 字节测试工程师十年经验直击UI 自动化测试痛点
- Flet tutorial 04 basic introduction to filledtonalbutton (tutorial includes source code)
- Some suggestions for interface design
- Win11系统wifi总掉线怎么办?Win11系统wifi总掉线的解决方法
- Qt五子棋人机对战画棋子之QPainter的使用误区总结
- render函数与虚拟dom
- 阿里测试师用UI自动化测试实现元素定位
猜你喜欢

电脑怎么保存网页到桌面上使用
![[server data recovery] a case of RAID5 data recovery stored in a brand of server](/img/a2/e03dcb30276d115969fbd00f1830dc.png)
[server data recovery] a case of RAID5 data recovery stored in a brand of server

仿ps样式js网页涂鸦板插件

idea配置标准注释

工厂从自动化到数字孪生,图扑能干什么?

WinCC7.5 SP1如何通过交叉索引来寻找变量及其位置?

【1200. 最小絕對差】

Managed service network: application architecture evolution in the cloud native Era

Foxit pdf editor v10.1.8 green version

网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
随机推荐
LeetCode 8. 字符串转换整数 (atoi)
LeetCode 8. String conversion integer (ATOI)
idea恢复默认快捷键
JS closure
企业数字化转型最佳实践案例:基于云的数字化平台系统安全措施简介与参考
LeetCode 7. Integer inversion
idea配置标准注释
面对同样复杂的测试任务为什么大老很快能梳理解决方案,阿里十年测试工程师道出其中的技巧
Implementation of redis distributed lock
Pytorch---使用Pytorch实现LinkNet进行语义分割
acwing 3302. Expression evaluation
Vue cleans up the keepalive cache scheme in a timely manner
Summary of the mistakes in the use of qpainter in QT gobang man-machine game
【申博攻略】六.如何联系心仪的博导
软件开发过中的采购
Ten years' experience of byte test engineer directly hits the pain point of UI automation test
Hands on deep learning (III) -- convolutional neural network CNN
What if the brightness of win11 is locked? Solution to win11 brightness locking
LeetCode 871. Minimum refueling times
[server data recovery] a case of RAID5 data recovery stored in a brand of server