今日目标
了解三种排序方法的原理
学习内容
三种排序方法
-
冒泡排序
原理:从第一个数开始,依次比较相邻的两个元素,如果顺序错误就交换位置,直至所有的数排列正确
int num[] = {3,0,1,8,7,2,5,4,6,9};
//冒泡排序 通过一次排序 最大的沉底
/*
for (int i = 0; i < 10; i++){//比较的次数
for (int j = 0; j < 10-i-1; j++){
if (num[j] > num[j+1]) {
//交换j和j+1的值
int temp = num[j+1];
num[j+1] = num[j];
num[j] = temp;
}
}
}
-
选择排序
原理:一次取出一个值,默认他是最小的如果发现比这个数小,就交换,遍历整个数组,找到一个真正意义上最小的,交换到最前面,依次循环
for (int i = 0; i < 10-1; i++){
//默认这是最小的
//int min = num[i];//3
for (int j = i+1; j < 10; j++){
//控制用min和后面的每一个进行比较
if (num[i] > num[j]){
//j对应的数字比min还小 交换
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
//一次遍历之后找到最小的值min
//num[i] = min;
}
-
插入排序
原理:从第二个数开始抽出,依次与前面的数比较,若比前面的数小,就插到前面去
for (int i = 0; i < 10; i++) {
//让i和i+1比较大小
if (num[i] > num[i+1]) {
//交换值
int temp = num[i];
num[i] = num[i+1];
num[i+1] = temp;
//让num[i]和前面的所有进行比较
for (int j = i; j > 0; j--){
if (num[j] < num[j-1]) {
temp = num[j];
num[j] = num[j-1];
num[j-1] = temp;
}
}
}
}
for (int i = 0; i < 10; i++) {
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
随机生成数
- rand(产生随机数)
相关函数
srand
表头文件
#include<stdlib.h>
定义函数
int rand(void)
- rand()%n表示产生0~n-1的随机数
实际操作
心得体会
写程序20% 改程序80%
如果我能达到写程序50% 改程序50%
我就能出师了吧
gif来源于:
https://www.cnblogs.com/xaimicom/p/9189471.html
https://blog.csdn.net/csdn_baotai/article/details/80293679
(侵删)