数据结构与算法:1,选择排序
以 从小到大排序为例
排序算法的过程:1,找出最小值位置 2,把最小值移到起始位置,3,循环重复前两步
图片来源
1,找出最小值位置
#include<iostream>
int main()
{int x[10] = { 12,14,45,5,43,23,24,2543,25,342 };int 最小值位置 = 0;for (int i = 0;i < 10;i++){if (x[最小值位置] > x[i])最小值位置 = i;}std::cout << "最小值位置 " << 最小值位置 << std::endl;return 0;
}
2,把最小值移到起始位置
#include<iostream>
int main()
{int x[10] = { 12,14,45,5,43,23,24,2543,25,342 };//1,找出最小值位置 int 最小值位置 = 0;for (int i = 0;i < 10;i++){if (x[最小值位置] > x[i])最小值位置 = i;}std::cout << "最小值位置 " << 最小值位置 << std::endl;//2,把最小值移到起始位置int 起始位置 = 0;int 临时存储;临时存储 = x[起始位置];x[起始位置] = x[最小值位置];x[最小值位置] = 临时存储;//输出 数组每个值 测试一下for (int i = 0;i < 10;i++){std::cout << x[i] << " ";}std::cout << std::endl;return 0;return 0;
}
3,循环重复前两步
#include<iostream>
int main()
{int x[10] = { 12,14,45,5,43,23,24,2543,25,342 };for (int 起始位置 = 0;起始位置 < 10;起始位置++)//3,循环重复前两步{//1,找出最小值位置 int 最小值位置 = 起始位置; //第三步中 这里改成 起始位置for (int i = 起始位置;i < 10;i++) //第三步中 这里改成 起始位置{if (x[最小值位置] > x[i])最小值位置 = i;}std::cout << "最小值位置 " << 最小值位置 << std::endl;//2,把最小值移到起始位置int 临时存储;临时存储 = x[起始位置];x[起始位置] = x[最小值位置];x[最小值位置] = 临时存储;}//输出 数组每个值 测试一下for (int i = 0;i < 10;i++){std::cout << x[i] << " ";}std::cout << std::endl;return 0;
}
下面用类来实现,复习一下类的知识
#include<iostream> class A
{
public:int x[10];A()//构造函数里 初始化数组中的值{x[0] = 12;x[1] = 14;x[2] = 45;x[3] = 5;x[4] = 43;x[5] = 23;x[6] = 24;x[7] = 2543;x[8] = 25;x[9] = 342;}void 输出(){for (int i = 0;i < 10;i++){std::cout << x[i] << " ";}std::cout << std::endl;}int 找出最小值的位置(int 起始位置){//1,找出最小值位置 int 最小值序号 = 起始位置; //第三步中 这里改成 起始位置for (int i = 起始位置;i < 10;i++) //第三步中 这里改成 起始位置{if (x[最小值序号] > x[i])最小值序号 = i;}//std::cout << "最小值序号 " << 最小值序号 << std::endl;return 最小值序号;}void 交换值(int 位置a, int 位置b){//2,把最小值移到起始位置int 临时存储;临时存储 = x[位置a];x[位置a] = x[位置b];x[位置b] = 临时存储;}void 开始选择排序()//这里演示 从小到大排序{int 最小值位置 = 0;for (int 起始位置 = 0;起始位置 < 10;起始位置++){最小值位置 = 找出最小值的位置(起始位置);交换值(起始位置, 最小值位置);}}
};
int main()
{A a;a.输出();//排序前 输出一下 看看效果a.开始选择排序();a.输出();//排序后 输出一下 看看效果return 0;
}