C++ 选择排序的理解
#include<stdio.h> #include <iostream> using namespace std; void swap(int *a, int *b) //元素交换 { int temp = 0; temp = *a; *a = *b; *b = temp; } int main() { int a[4] = { 23, 20, 13, 22}; //定义一个int类型数组 //选择排序 for (int i = 0; i <4; i++) { int min1 = i; //定义一个变量赋值为i,表示当前循环中最小的值的下标,表示最小值在数组中所对应的的位置下标 for (int j = i + 1; j < 4; j++) //定义一个for循环,j的初始值为当前循环的第二个元素 { if (a[j] < a[min1])//每一次循环,拿当前循环中第二个元素与后面的元素进行对比,如果发现比后面的元素小,则记录当前较小元素所在的数组下标,并赋值给min1 { min1 = j; } } if (min1 != i) //当循环结束发现min的值并不是最后一个值时,则将当前循环中最小的值,与当前循环中的第一个元素的值进行交换。如果 //如果当前的min1存储的值是最后一次循环的值,并且未发生改变,则表示该数值已经是最大,则表示排序已经完成,直接跳出循环 { swap(&a[min1], &a[i]); } } return 0; }