#include <stdio.h>
void bubble_sort(int arr[], int sz)//冒泡排序
{
int i = 0, j = 0;
for (i = 0; i < sz - 1; i++)
{
for (j = 0; j < sz - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
void selection_sort(int arr[], int sz)//选择排序
{
int i = 0, j = 0, index = 0;//index是后面元素的最小值的下标
for (i = 0; i < sz - 1; i++)
{
index = i;//假设i的位置就是最小值
for (j = i + 1; j < sz; j++)
{
if (arr[j] < arr[index])
{
index = j;
}
}//出了循环,index一定是最小值的下标
int tmp = arr[i];
arr[i] = arr[index];
arr[index] = tmp;//让最小值和当前值交换,确保前面的是最小的
}
}
void print(int arr[], int sz)//打印整个一维数组
{
for (int i = 0; i < sz; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main()
{
int arr1[] = { 10,9,8,7,6,5,4,3,2,1 };
int sz1 = sizeof(arr1) / sizeof(arr1[0]);
print(arr1, sz1);
bubble_sort(arr1, sz1);
print(arr1, sz1);
printf("\n");
int arr2[] = { 10,9,8,7,6,5,4,3,2,1,0 };
int sz2 = sizeof(arr2) / sizeof(arr2[0]);
print(arr2, sz2);
selection_sort(arr2, sz2);
print(arr2, sz2);
return 0;
}
选择排序和冒泡排序的代码
张小明
前端开发工程师
51单片机I2C协议驱动AT24C64 EEPROM:从时序模拟到工程实践
1. 项目缘起:为什么51单片机读写AT24C64是个“经典”活?搞单片机开发的,尤其是从51入门的,几乎都绕不开I2C总线,而AT24C系列EEPROM就是I2C总线上的“常客”。你可能觉得,不就是读个写个数据嘛,网…
STM32CubeIDE动态调试:如何在不复位芯片的情况下诊断运行中程序
1. 项目概述:为什么需要调试正在运行的程序?在嵌入式开发,尤其是STM32这类MCU的项目中,调试器(Debugger)是我们最亲密的战友。但很多时候,我们面对的场景并非“从零开始”的单步执行。想象一下&…
C++核心知识体系构建:从原理到实战的深度复习指南
1. 项目概述:一份C复习题库的诞生与价值最近在整理自己的技术笔记,翻到了几年前为了准备面试和巩固基础而手搓的一份C复习题库。当时市面上资料虽多,但要么过于零散不成体系,要么深度不够只讲皮毛,要么就是纯粹的“八股…
UE5游戏上架Epic商店全流程:从打包优化到商店配置实战指南
1. 项目概述:从UE5工程到Epic商店的完整旅程如果你是一个独立开发者或者小型团队,费尽心血用虚幻引擎5(UE5)打磨出了一款游戏,那么接下来最激动人心也最让人头疼的环节,可能就是把它上架到Epic Games Store…
VS与CMake管理的QtQuick项目开发指南
1. 项目概述:VS与CMake管理的QtQuick项目 在Windows平台开发QtQuick应用时,Visual Studio(以下简称VS)作为主力IDE的情况非常普遍。但当我们面对一个采用CMake组织的QtQuick项目时,很多开发者会遇到"如何正确用VS…
UniApp跨端适配实战:从rpx到响应式布局的完整解决方案
1. 项目概述:跨端适配的“一次开发”之痛与解 做UniApp开发的朋友,估计都遇到过这个让人又爱又恨的场景:你精心打磨的页面在手机上跑得丝滑流畅,布局完美,但一旦放到平板或者大屏设备上,瞬间就“露了馅”—…