当前位置:网站首页>插入排序,选择排序,冒泡排序
插入排序,选择排序,冒泡排序
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;
}
边栏推荐
猜你喜欢

HWiNFO硬件检测工具v7.26绿色版

Foxit pdf editor v10.1.8 green version

哈希表、哈希函数、布隆过滤器、一致性哈希

What should I do if my computer sharing printer refuses access

网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??

idea恢复默认快捷键

多模输入事件分发机制详解

PS vertical English and digital text how to change direction (vertical display)

【观察】联想:3X(1+N)智慧办公解决方案,释放办公生产力“乘数效应”

RFID仓储管理系统解决方案的优点
随机推荐
colResizable.js自动调整表格宽度插件
Vue cleans up the keepalive cache scheme in a timely manner
Explication détaillée du mécanisme de distribution des événements d'entrée multimodes
LeetCode 871. 最低加油次数
What are the functional modules of RFID warehouse management system solution
卷积神经网络在深度学习中新发展的5篇论文推荐
科普达人丨一文看懂阿里云的秘密武器“神龙架构”
黄金k线图中的三角形有几种?
jekins初始化密码没有或找不到
HMS Core 统一扫码服务
网件r7000梅林系统5g不稳定 5g信号经常掉线解决方法
多模輸入事件分發機制詳解
[1200. Différence absolue minimale]
Pytorch---使用Pytorch实现LinkNet进行语义分割
How does the computer save web pages to the desktop for use
PS vertical English and digital text how to change direction (vertical display)
哈希表、哈希函数、布隆过滤器、一致性哈希
工厂从自动化到数字孪生,图扑能干什么?
测试员的算法面试题-找众数
【微服务|SCG】Predicate的使用