冒泡排序
16 25 9 90 23
降序排列 —从大到小
冒泡排序的基础原理: 遍历和交换
第一轮循环:
某个数字小于后面的数字,那么就交换
1 25 16 9 90 23
2 25 16 9 90 23
3 25 16 90 9 23
4 25 16 90 23 9 最小的数字就冒到了最后
1、需要比较多轮: (数组长度一1)轮
2、每一轮比较的次数比上一轮-1次
(数组长度一1)-当前的轮数
#include <stdio.h>
# define N 5 //宏定义,方便更改
int main()
{
/*
16 25 9 90 23
降序排列 —从大到小
冒泡排序的基础原理: 遍历和交换
第一轮循环:
某个数字小于后面的数字,那么就交换
1 25 16 9 90 23
2 25 16 9 90 23
3 25 16 90 9 23
4 25 16 90 23 9 最小的数字就冒到了最后
1、需要比较多轮: (数组长度一1)轮
2、每一轮比较的次数比上一轮-1次
(数组长度一1)-当前的轮数
*/
int i,j;//循环变量
int temp;//用于交换的临时变量
int nums[N] = {16, 25, 9, 90, 23};
//外层循环控制轮数
for(i = 0;i < N-1;i++)
{
//内层循环控制每次比较的次数
for(j = 0;j < N-i-1;j++)//每一轮比较的次数比上一轮-1次
{
//如果当前值小于后一值,那么就进行交换
if( nums[j] < nums[j+1])
{
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
printf("降序排序之后的结果为:\n");
//打印结果
for(i = 0;i < N;i++)
{
printf("%d\t",nums[i]);
}
return 0;
}
删除与插入
1、查找要删除数字的下标
2、从该下标开始,后面一个覆盖前面一个
3、数组的总长度 - 1
#include <stdio.h>
int main()
{
/*
1、查找要删除数字的下标
2、从该下标开始,后面一个覆盖前面一个
3、数组的总长度 - 1
*/
int count = 5; //表示数组的长度、
double powers[] = {45140, 51255, 41044, 43225, 46848};
double deletepower; //用户要删除的战力值
double insertpower; //用户要插入的战力值
int deletelndex = -1; //删除战力值的下标, 赋其一个 不可能 的值
int i; //循环变量
printf("请输入你要删除的战力值: ");
scanf("%lf", &deletepower);
for(i = 0; i < count; i++)
{
if(deletepower == powers[i])//如果查找成功
{ //记录当前下标
deletelndex = i;
break; //跳出循环
}
}
if(deletelndex == -1)
{
printf("很遗憾,没找到要删除的战力值\n");
}
else
{ //从下标开始,后面一个覆盖前面一个数字
for(i = deletelndex ;i < count -1; i++) //数组总长度 - 1
{ //开始覆盖要删除的值
powers[i] = powers[i+1];
}
count--;//删除完毕后,一定要减少数组长度
printf("删除后的结果为:\n"); //打印结果
for(i = 0; i < count; i++)
{
printf("%.2lf\t",powers[i]);
}
}
//尾部进行插入
printf("\n请输入要插入的战力值:");
scanf("%lf",&insertpower);
powers[count] = insertpower;
count++;
printf("插入后的结果为:\n"); //打印结果
for(i = 0; i < count; i++)
{
printf("%.2lf\t",powers[i]);
}
}