一、概念
二、代码
#include <stdio.h>
int main()
{
// 已知一个无序的数组,里面有5个元素,要求对数组进行排序
// int nums[5] = {99,22,33,66,77};
/*
int a = 10;
int b = 12;
int c = 5;
printf("排序前 a = %i, b = %i , c = %i\n",a,b,c);
if ( a > b) {
int temp = a;
a = b;
b = temp;
}
if ( a > c) {
int temp = a;
a = c;
c = temp;
}
if ( b > c) {
int temp = b;
b = c;
c = temp;
}
printf("排序后 a = %i, b = %i , c = %i\n",a,b,c);
*/
#pragma 1.选择排序
int nums[5] = {99,22,33,66,77};
/*
选择排序: 从小到大
特点 :
拿到其中一个元素的值 和 其他元素进行比较, 完全比较完一次之后,最值出现在第0位
*/
int length = sizeof(nums) / sizeof(nums[0]);
printf("length = %i\n",length);
for (int i = 0; i < length; i++) {
printf("遍历前 nums[%i] = %i\n",i,nums[i]);
}
// length - 1 视为了方式角标越界
// length -1 因为最后一个元素 已经没有可以比较的了
// 0,1,2,3,4
for (int i = 0; i < length -1 ; i++) {
for (int j = i + 1; j < length; j++) {
// printf("*");
// printf("i = %i, j = %i\n",i,j);
if (nums[i] > nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
printf("\n");
}
printf("--------\n");
for (int i = 0; i < length; i++) {
printf("遍历后 nums[%i] = %i\n",i,nums[i]);
}
return 0;
}
image.png