pragma mark 冒泡排序
pragma mark 概念
/*
#pragma 冒泡排序
特点:
是用相邻的两个元素进行比较,每完全比较完一次,最值出现在末尾 // 第一次得到最大的值
// 每次都是从0开始
规律:
比较次数
****
***
**
*
*/
pragma mark 代码
#include <stdio.h>
int main()
{
#pragma mark 已知一个无序的数组,里面有5个元素,要求对数组进行排序
int nums[5] = {99,12,88,11,22};
#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 排序前
// 动态获取数量
int length = sizeof(nums)/sizeof(nums[0]);
for (int i = 0; i < length; i++) {
printf("nums[%i] = %i\n",i, nums[i]);
}
#pragma mark 冒泡排序
for (int i = 0; i < length - 1; i++)
{
for (int j = 0; j < length - 1 - i; j++) {
// printf("*");
// 获取相邻索引
printf("%i == %i \n",j,j+1); // 冒泡排序重点 : 每相邻数进行比较
// 区别
if (nums[j]>nums[j+1]) {
// 第三变量 保存第一个变量先
int temp = nums[j];
// 将 第二个数 赋值给 第一个数
nums[j] = nums[j+1];
// 再讲 第三变量 赋值给 第二个数
nums[j+1] = temp;
}
}
#pragma mark 之前学习的
/*
for (int j = i; j < 4; j++) {
// printf("*");
// 获取相邻索引
printf("%i == %i \n",j,j+1);
}
*/
// printf("\n");
}
printf("-------------\n");
#pragma mark 排序后
// 动态获取数量
for (int i = 0; i < length; i++) {
printf("nums[%i] = %i\n",i, nums[i]);
}
return 0;
}