当前位置:网站首页>插入排序,选择排序,冒泡排序
插入排序,选择排序,冒泡排序
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;
}
边栏推荐
- Sword finger offer II 80-100 (continuous update)
- [solution] paddlepaddle 2 X call static graph mode
- 强化学习-学习笔记2 | 价值学习
- Explication détaillée du mécanisme de distribution des événements d'entrée multimodes
- What if the WiFi of win11 system always drops? Solution of WiFi total drop in win11 system
- Golang中UTF编码和字符集
- 嵌入式TC 测试用例
- 哈希表、哈希函数、布隆过滤器、一致性哈希
- How does the computer save web pages to the desktop for use
- LeetCode 8. String conversion integer (ATOI)
猜你喜欢
【1200. 最小絕對差】
6月“墨力原创作者计划”获奖名单公布!邀您共话国产数据库
多模输入事件分发机制详解
Jiuqi ny8b062d MCU specification /datasheet
接口设计时的一些建议
idea配置标准注释
What if win11u disk refuses access? An effective solution to win11u disk access denial
JS卡牌样式倒计时天数
Some suggestions for interface design
Flet tutorial 04 basic introduction to filledtonalbutton (tutorial includes source code)
随机推荐
Stack: how to realize the judgment of valid brackets?
In the face of the same complex test task, why can the elder sort out the solution quickly? Ali's ten-year test engineers showed their skills
电脑共享打印机拒绝访问要怎么办
伦敦银走势图分析的新方法
uniapp 富文本编辑器使用
MySQL - database query - use of aggregate function, aggregate query, grouping query
Why is TCP three handshakes and four waves
阿里测试师用UI自动化测试实现元素定位
Advantages of RFID warehouse management system solution
Redis分布式锁的实现
软件开发过中的采购
How does wincc7.5 SP1 find variables and their positions through cross indexing?
idea插件
What if the WiFi of win11 system always drops? Solution of WiFi total drop in win11 system
Jmeter 之压测入门
go语言笔记(4)go常用管理命令
What are the functional modules of RFID warehouse management system solution
E-week finance | Q1 the number of active people in the insurance industry was 86.8867 million, and the licenses of 19 Payment institutions were cancelled
word中使用自动插入题注功能
Advantages of semantic tags and block level inline elements