今日目標(biāo)
了解三種排序方法的原理
學(xué)習(xí)內(nèi)容
三種排序方法
-
冒泡排序
原理:從第一個數(shù)開始恳谎,依次比較相鄰的兩個元素术浪,如果順序錯誤就交換位置瓢对,直至所有的數(shù)排列正確
int num[] = {3,0,1,8,7,2,5,4,6,9};
//冒泡排序 通過一次排序 最大的沉底
/*
for (int i = 0; i < 10; i++){//比較的次數(shù)
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;
}
}
}
-
選擇排序
原理:一次取出一個值,默認(rèn)他是最小的如果發(fā)現(xiàn)比這個數(shù)小,就交換胰苏,遍歷整個數(shù)組,找到一個真正意義上最小的,交換到最前面醇疼,依次循環(huán)
for (int i = 0; i < 10-1; i++){
//默認(rèn)這是最小的
//int min = num[i];//3
for (int j = i+1; j < 10; j++){
//控制用min和后面的每一個進(jìn)行比較
if (num[i] > num[j]){
//j對應(yīng)的數(shù)字比min還小 交換
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
//一次遍歷之后找到最小的值min
//num[i] = min;
}
-
插入排序
原理:從第二個數(shù)開始抽出硕并,依次與前面的數(shù)比較,若比前面的數(shù)小秧荆,就插到前面去
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]和前面的所有進(jìn)行比較
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;
}
隨機(jī)生成數(shù)
- rand(產(chǎn)生隨機(jī)數(shù))
相關(guān)函數(shù)
srand
表頭文件
#include<stdlib.h>
定義函數(shù)
int rand(void)
- rand()%n表示產(chǎn)生0~n-1的隨機(jī)數(shù)
實(shí)際操作
心得體會
寫程序20% 改程序80%
如果我能達(dá)到寫程序50% 改程序50%
我就能出師了吧
gif來源于:
https://www.cnblogs.com/xaimicom/p/9189471.html
https://blog.csdn.net/csdn_baotai/article/details/80293679
(侵刪)