pragma mark 选择排序
pragma mark 概念
pragma mark 代码
#include <stdio.h>
int main()
{
#pragma mark 选择排序
// 已知一个无序的数组,里面有5个元素,要求对数组进行排序
int nums[5] = {99,12,88,11,22};
#pragma mark 回顾排序
/*
int a = 10;
int b = 12;
int c = 5;
if (a > c) {
int temp = a;
a = c;
c = temp;
}
if (b > c) {
int temp = b;
b = c;
c = temp;
}
printf("%i, %i, %i,",a,b,c);
*/
#pragma mark 其他方法
/*
选择排序:
特定:
拿到其中一个元素的指依次和其他元素进行比较,完全比较完一次之后,最小值出现在第0位
// 朝下 改变 初始化的表达式
****
***
**
*
*/
#pragma mark 遍历之后的结果
// 动态获取数量
int length = sizeof(nums)/sizeof(nums[0]);
for (int i = 0; i < length; i++) {
printf("nums[%i] = %i\n",i, nums[i]);
}
// 比较5-1 = 4次 length - 1 次
// length -1 是为了防止角标越界
// length -1 因为最后一个元素已经没有可以比较的了
// 0,1,2,3,4
#pragma mark 取出数比较 交换两个数
for (int i = 0; i < length - 1 ; i++) {
for (int j = i; j< length - 1; 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");
}
#pragma mark 遍历之后的结果
printf("-----------------------------\n");
for (int i = 0; i < length - 1; i++) {
printf("nums[%i] = %i\n",i, nums[i]);
}
return 0;
}
网友评论