C++程序设计:选择法排序详解

需积分: 15 1 下载量 4 浏览量 更新于2024-08-24 收藏 8.66MB PPT 举报
"这篇资源是关于使用C++编程语言实现选择法进行从小到大排序的教程,通过一个具体的示例展示了如何对6个数字进行排序的过程。选择法的基本思路是不断找到当前未排序部分的最小值,然后将其与未排序部分的第一个元素交换,从而逐步完成排序。这个过程通过代码解释和步骤分析来展示,适合初学者理解和学习C++编程以及排序算法。" 在C++编程中,排序算法是基础且重要的概念,它们用于组织和管理数据,使得数据按照特定顺序排列。选择法排序(Selection Sort)是一种简单的直观排序算法,其基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 在这个例子中,具体步骤如下: 1. 首先,我们假设数组的第一个元素是最小的,即序号为1的数(9)。 2. 接着,遍历数组,从第二个元素(8)开始,与当前假设的最小数(9)进行比较。 3. 如果找到更小的数(例如,8),更新最小数的位置(现在是最小数的序号变为2)。 4. 继续遍历,将最小数与数组的第一个元素(即当前未排序部分的首位)交换位置,这样每次遍历结束后,未排序部分的第一个元素都会是当前未排序部分的最小值。 5. 重复以上步骤,直到整个数组排序完成。 C++语言本身具有以下特点,使得它成为学习排序算法的理想选择: 1. 结构化:C++支持结构化编程,使得代码清晰、易于理解和维护。 2. 强烈类型:C++是一种静态类型语言,强制类型检查有助于减少错误。 3. 高级与低级特性结合:C++提供丰富的运算符,包括位运算,同时支持面向对象编程,兼顾效率和灵活性。 4. 可移植性:C++编写的程序可以轻松移植到不同的平台,只需极少或无需修改。 5. 语法规则灵活:虽然这可能导致调试难度增加,但也给了程序员很大的自由度来设计高效代码。 在学习C++的过程中,了解和掌握各种排序算法,如选择法、冒泡法、插入法、快速排序、归并排序等,是提高编程技能的关键步骤。对于初学者,理解并实现这些算法可以帮助他们更好地理解编程逻辑,而对C++语法规则的深入理解则能够提高程序调试和问题解决的能力。
2023-07-08 上传

int main(void) { const unsigned char *point; u16 i=0; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ // uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú // KEY_Init(); //°´¼ü³õʼ»¯ AT24CXX_Init(); //IIC³õʼ»¯ OLED_init(); point= &picture_tab[0]; TIM_OCInitTypeDef TIM_OCInitStructure; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //LED¶Ë¿Ú³õʼ»¯ TIM3_Int_Init(4999,7199);//10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½5000Ϊ500ms TIM4_PWM_Init(10000-1,72-1); //72M/72=1MHz¼ÆÊýƵÂÊ,ÖØ×°ÔØÖµ while(1) { OLED_ShowString(0,30,"21221054",16); OLED_ShowString(0,15,"2023/5/18",16); OLED_ShowChinese(0,0,0,16,1); OLED_ShowChinese(16,0,1,16,1); OLED_ShowChinese(32,0,2,16,1); delay_ms(1000); OLED_Refresh_Gram(); //¸üÐÂÏÔʾµ½OLED if(++i > 3) { LED1=!LED1;//ÌáʾϵͳÕýÔÚÔËÐÐ i=0; } while(1) { u16 u16tmp; u16tmp += 500; if(u16tmp > 10000) u16tmp=0; //³õʼ»¯TIM4 Channe3 PWMģʽ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //Ñ¡Ôñ¶¨Ê±Æ÷ģʽ:TIMÂö³å¿í¶Èµ÷ÖÆģʽ2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //Êä³ö¼«ÐÔ:TIMÊä³ö±È½Ï¼«ÐÔ¸ß TIM_OCInitStructure.TIM_Pulse = u16tmp; TIM_OC3Init(TIM4, &TIM_OCInitStructure); //¸ù¾ÝTÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIM4 OC3 LED2=!LED2; //LED3=!LED3; delay_ms(300); } } }这段代码问题如下:declaration may not appear after executable statement inblock,TIM OCINITTYPEDEF TIM OCINITSTRUCTURE,请修改这个问题

2023-06-09 上传