📦 归档笔记 — 原创建于 WizNote,仅作归档展示;观点以当年为准,非最新。

演示 选择法排序 算法

创建时间2018-02-08最后修改2018-04-09原位置/程序员成长之旅/C语言/笔记/字数526图片/附件6
目录:程序员成长之旅/C语言/笔记
🖼 图片占位(归档模式)图片见原始导出:%E6%BC%94%E7%A4%BA%20%E9%80%89%E6%8B%A9%E6%B3%95%E6%8E%92%E5%BA%8F%20%E7%AE%97%E6%B3%95.assets/20180209172145499.jpg

#include<stdio.h>

int main() {

int i = 0, j = 0;

int Max = 0,Temp1=0,Temp2=0, Num[11] = { 5496,57227,12,672,3494,44546,6664,442454,24554,23234 };

for (i = 0; i < 10; i++) {//控制运行的第几个数字

for (j = i, Max = Num[i], Temp2 = 0; j < 10; j++) {//计算自己和后面所有的数字谁最大

if (Num[j] > Max) {

Max = Num[j];//最大的缓存在Max

Temp2 = j;//同时缓存Num[j]的编号

}

}

if (Max > Num[i]) {//防止相等(其实没什么用= =)

Temp1 = Num[i];//缓存Num[i]

Num[i] = Max;//Num[i]等于缓存好的最大数(自己和后面)

Num[Temp2] = Temp1;//相等于 Num[j]=Num[i] 只不过只能提取缓存

}

}

for (i = 0, j = 1; i < 10; i++, j++) {//输出排好序的数字

printf("%d\t", Num[i]);

if (j % 5 == 0) {

printf("\n");

}

}

}

运行截图:

🖼 图片占位(归档模式)图片见原始导出:%E6%BC%94%E7%A4%BA%20%E9%80%89%E6%8B%A9%E6%B3%95%E6%8E%92%E5%BA%8F%20%E7%AE%97%E6%B3%95.assets/f966b187-dec8-41b8-8ecf-d7085016befc.png

其他版本(之前误认为选择法为冒泡排序法):

#include<stdio.h> //冒泡法排序

int main() {

int i = 0, j = 0;

int Num[11] = { 12,34541,39436,99464664,34564,35,145646,1546,231,344126 };//预留出一位养成好习惯

int Temp = 0, Max = 0;

for (i = 0; i < 10; i++) {//外层循环 控制运行到第几个数字

Max = Num[i];//比对之前设置“Max”默认值为 当前运行数字“Num[i]”

for (j = i; j <10; j++) {//内层循环 控制 当前数字 需要对比几次(和后面所有的数字进行比对)

if (Num[j] > Max) {//如果 被对比数字 比 缓存的最大数大(默认为当前运行数字) 就把当前数字替换为当前最大值, 并且把“当前最大值”原位置替换为 当前运行数字

Max = Num[j];

Temp = Num[i];

Num[i] = Max;

Num[j] = Temp;

}

}

}

for (i = 0,j=1; i < 10; i++,j++) {

printf("%9d\t", Num[i]);

if (j % 5 == 0) {

printf("\n");

}

}

}

运行结果:

🖼 图片占位(归档模式)图片见原始导出:%E6%BC%94%E7%A4%BA%20%E9%80%89%E6%8B%A9%E6%B3%95%E6%8E%92%E5%BA%8F%20%E7%AE%97%E6%B3%95.assets/eee90322-c0fb-479d-8bdc-57f851b995f9.png