摘要
- 冒泡排序
- 選擇排序
- 插入排序
冒泡排序
- 原理:依次從頭開(kāi)始將第一個(gè)數(shù)和下一個(gè)比較,大的沉底钠怯,第一次循環(huán)可找到最大的佳魔,第二次循環(huán)可找到第二大的。
- demon
#include<stdio.h> int main(){ int num[]={3,0,1,8,7,2,5,4,9,6}; for(int i=1;i<10;i++){//外層循環(huán)晦炊,控制遍歷多少次 //開(kāi)始內(nèi)部每一次排序 for(int j=0;j<10-i;j++){ //大數(shù)沉底 if(num[j]>num[j+1]){ int k=0; k=num[j]; num[j]=num[j+1]; num[j+1]=k; } } } for(int i=0;i<10;i++){ printf("%d ",num[i]); } return 0; }
選擇排序
- 原理:先默認(rèn)一個(gè)數(shù)是最小的鞠鲜,依次和其他數(shù)比較,通過(guò)交換讓該值始終保持最小刽锤,每次循環(huán)會(huì)得到一個(gè)最小的值镊尺,重復(fù)循環(huán)該操作直至結(jié)束朦佩。
- demon
#include<stdio.h> int main(){ int num[]={3,0,1,8,7,2,5,4,9,6}; for(int i=0;i<9;i++) {//控制次數(shù) //取出i對(duì)應(yīng)的數(shù)并思,默認(rèn)是最小的數(shù) int temp=num[i]; //從i的后面查找最小的數(shù)字,放到i位置 for(int j=i+1;j<10;j++){ //讓temp和i后面的每個(gè)數(shù)比較语稠,讓temp始終保持是最小的 if(num[j]<temp){ int n=temp; temp=num[j]; num[j]=n; } } num[i]=temp; } return 0; }
插入排序
- 原理:通過(guò)構(gòu)建有序序列宋彼,對(duì)于未排序的數(shù)據(jù)弄砍,在已排序序列中從后向前掃描,找到相應(yīng)的位置并插入输涕。
- demon
#include<stdio.h> int main(){ int num[]={3,0,1,8,7,2,5,4,9,6}; for(int i=0;i<9;i++){//控制次數(shù) if(num[i]>num[i+1]){ //換位置 int temp=num[i]; num[i]=num[i+1]; num[i+1]=temp; //讓i+1對(duì)應(yīng)的值與前面比大小 for(int j=i;j>0;j--){ if(num[j]>num[j-1]){ break; }else{ int temp=num[j]; num[j]=num[j-1]; num[j-1]=temp; } } } } for(int a=0;a<10;a++){ printf("%d ",num[a]); } return 0; }