四川平台网站建设方案,朝阳区住房和城乡建设部网站,网站建设合同 售后维护期,vs设置网站开发环境1.插入排序实现 插入排序的工作原理是#xff1a;通过构建有序序列#xff0c;对于未排序数据#xff0c;在已经排序的序列从后向前扫描#xff0c;找到位置并插入#xff0c;类似于平时打扑克牌时#xff0c;将牌从大到小排列#xff0c;每次摸到一张牌就插入到正确的位…1.插入排序实现 插入排序的工作原理是通过构建有序序列对于未排序数据在已经排序的序列从后向前扫描找到位置并插入类似于平时打扑克牌时将牌从大到小排列每次摸到一张牌就插入到正确的位置。 实现逻辑 1从第一个元素出现该元素认为已经被排好序 2取出下一个元素在已经排序的序列中从后向前扫描 (3如果扫描到某个元素大于取出的新元素将该元素移到下一个位置 4重复3直到找到已排序的元素小于或者等于新元素的位置 5将新元素插入到该位置后面 6重复2-5 代码实现
void insertSort(int* arr,int len)
{for(int ii;ilen;i){int curarr[i];int ji-1;while(j0arr[j]cur){arr[j1]arr[j];j--;}arr[j1]cur;}
}
2.插入排序的时间复杂度 问题规模仍然为n最好情况是序列是升序这样只需要比较n-1次最坏情况是序列是降序需要比较n(n-1)次所以时间复杂度为O(n^2)
3.leetcode题目
3.1 删除某些元素后的数组均值 void insertionSort(int *a ,int n){int i,j;int tmp ;for(i 1; i n; i){for(j i - 1; j0; --j){if(a[j] a[j1]){tmp a[j];a[j] a[j1];a[j1] tmp; }}}
}
double trimMean(int* arr, int arrSize){insertionSort(arr,arrSize);int cnt arrSize / 20;double count 0;for(int i cnt; i arrSize - cnt; i){count arr[i];}return count / (arrSize - 2*cnt);
}
3.2 去掉最低工资和最高工资后的工资平均值 double average(int* salary,int salarySize){for (int i 1; i salarySize; i) {int tmp salary[i];int j i - 1;for (; j 0 tmp salary[j]; j--) {salary[j 1] salary[j];}salary[j 1] tmp;}double ans0;for(int i1;isalarySize-1;i){anssalary[i];}return ans/(salarySize-2);
}
3.3 学生分数的最小差值 int minimumDifference(int* nums, int numsSize, int k) {for (int i 1; i numsSize; i){int tmp nums[i];int j i - 1;for (; j 0 tmp nums[j]; j--) {nums[j 1] nums[j];}nums[j 1] tmp;}int ret100000;for(int i0;ik-1numsSize;i){int ansnums[ik-1]-nums[i];if(ansret){retans;}}return ret;
}
相关文章: