选择排序的核心思想是先找到第一小的元素的下标,然后再找到第二小的元素的下标…以此类推,然后分别放入数组的第一项,第二项…直到全部排序完成
首先定义一个数组,这里的n是数组的元素个数
int arr[] = {15,5,3,4,2};
int n = sizeof(arr) / sizeof(arr[0]);
注意看第一层for循环,i<n-1,意味着最多排到数组的倒数第二项,倒数第二项排了最后一项自然也就排了。第二层for循环用于数组的第i+1项与后面的每一项进行比较,找出较小的元素的下标
int index;//记录比较小的元素的下标
int temp;
for (int i = 0; i < n-1; i++)
{
index = i;
//用于第i+1项和后面每一项的元素比较
for (int j = i; j < n; j++)
{
if (arr[j] < arr[index]) {
index = j;
}
//此循环结束后将找到后面最小的元素的下标
}
//找到最小的元素的下标后将第i+1项的的值与之交换完成排序
temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
运行结果如下