学习目标
排序的概念
本阶段会学习的排序有
冒泡排序概念
第一轮比较,与交换
例题1:一趟交换
例题2:多躺比较,冒泡排序
【题意分析】 进行n-1趟冒泡排序的过程,每一次输出当前一趟冒泡排序完的结果 【思路分析】 定义一个n,输入当前的n和储存n个数的数组 for循环的方式进行n(n-1)趟排序 如果当前的数大于后面的数,那么交换两数 for循环输出每一次数组的变化 【参考代码】 #include<iostream> using namespace std; int a[210]; int main(){ //定义一个n,输入当前的n和储存n个数的数组 int n; cin>>n; for(int i=1;i<=n;i++){//a[1]~a[n] cin>>a[i]; } //for循环的方式进行n(n-1)趟排序 for(int i=1;i<=n-1;i++){//根据自己调整是否n-1 for(int j=1;j<=n-i;j++){//自己调整是否n-i //如果当前的数大于后面的数,那么交换两数 if(a[j]>a[j+1]){ swap(a[j],a[j+1]); } } //for循环输出每一次数组的变化 for(int i=1;i<=n;i++){ cout<<a[i]<<" "; } cout<<endl; } return 0; }View Code
选择练习题
选择排序概念
选择排序就是每一轮选择最小(或最大)的,然后和没排序部分的第一个进行交换;但选择排序,选择的过程是通过一个个比较得来的;先把没排序部分的第一个当做最小的(记录下标)然后和后面的比,如果有比第一个小的,那么记录新的小值的下标,然后再用新的最小值继续往后比,重复这个过程,就可以比较出最小值,然后交换到未排序部分第一个位置,然后进行多轮,就实现了全部排序;
例题1,一趟选选择
多轮选择动态图;
选择排序代码:
【题意分析】 我们当前需要对数组进行从小到大排序 【思路分析】 可以使用选择排序 定义一个变量为最小值,假设最小值为第一个,然后将当前变量用for循环的方式与每一个数对比,找出最小 再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 最后输出排序好的数组 【参考代码】 #include <iostream> using namespace std; int a[1010]; int main() { ////定义n和数组a,并且将n和n个数输入 int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } //定义一个变量为最小值,假设最小值为第一个,然后将当前变量用for循环的方式与每一个数对比,找出最小 for (int i = 1; i <= n-1; i++) { int k = i; // 最小值的下标 for (int j = i; j <= n; j++) { // 找 a[i]~a[n] 的最小值 if (a[j] < a[k]) { k = j; } } // 将 a[i]~a[n] 的最小值和 a[i] 交换 swap(a[k], a[i]); } //最后输出排序好的数组 for (int i = 1; i <= n; i++) { cout << a[i] << " "; } return 0; }View Code
标签:int,C++,选择,最小值,U3,数组,冒泡排序,排序 From: https://www.cnblogs.com/jayxuan/p/17843679.html