## 插入排序 - 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 ![](https://img-blog.csdnimg.cn/img_convert/dcade1832cecd2072bd6d7e4b515ec2e.gif) - 排序思路: + 假设按照升序排序 + 1.从索引为1的元素开始向前比较, 一旦前面一个元素大于自己就让前面的元素先后移动 + 2.直到没有可比较元素或者前面的元素小于自己的时候, 就将自己插入到当前空出来的位置 - 代码实现: ```c int main() { // 待排序数组 int nums[5] = {3, 1, 2, 0, 3}; // 0.计算待排序数组长度 int len = sizeof(nums) / sizeof(nums[0]); // 1.从第一个元素开始依次取出所有用于比较元素 for (int i = 1; i < len; i++) { // 2.取出用于比较元素 int temp = nums[i]; int j = i; while(j > 0){ // 3.判断元素是否小于前一个元素 if(temp < nums[j - 1]){ // 4.让前一个元素向后移动一位 nums[j] = nums[j - 1]; }else{ break; } j--; } // 5.将元素插入到空出来的位置 nums[j] = temp; } } ``` ```c int main() { // 待排序数组 int nums[5] = {3, 1, 2, 0, 3}; // 0.计算待排序数组长度 int len = sizeof(nums) / sizeof(nums[0]); // 1.从第一个元素开始依次取出所有用于比较元素 for (int i = 1; i < len; i++) { // 2.遍历取出前面元素进行比较 for(int j = i; j > 0; j--) { // 3.如果前面一个元素大于当前元素,就交换位置 if(nums[j-1] > nums[j]){ int temp = nums[j]; nums[j] = nums[j - 1]; nums[j - 1] = temp; }else{ break; } } } } ``` ## 最后,如果有任何疑问,请加微信 **leader_fengy** 拉你进学习交流群。 开源不易,码字不易,如果觉得有价值,欢迎分享支持。