- 博客(9)
- 收藏
- 关注
原创 排序算法——快速排序
排序算法——快速排序算法思想就快速排序而言,快速排序被认为是一种最好的内部排序方法,快速排序是C.R.A.Hoare,1962年提出一种划分交换排序,它采用一种分治的策略,通常称为分治法。什么是分治法分治法基本想通俗来讲分治法就是将原来的问题分解成很多个小问题,但是这些小问题与原来的问题结构相似。通常用递归来解决这些子问题。然后将这些子问题的解组合为原问题的解。快速排序的基本思想1,分解2,求解3,组合假设对以下10个数进行快速排序:6 1 2 7 9 3 4 5 10 8我们先模拟快
2021-04-02 15:47:02
553
1
原创 排序算法——选择排序
排序算法——选择排序选择排序基本思想选择排序(selection Sort)每一次在待排序数中选择最小的数,顺序放在已经拍好序的子文件中。直到所有的数全部排序成功。表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间。选择排序相对来说比较简单。2.基本过程n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:(1)在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。(2)再从剩
2021-04-02 15:16:23
193
原创 最简单的希尔排序
最简单的希尔排序解题思路要想弄清楚希尔排序,首先要知道什么是插入排序。插入排序假设我们输入的是 “5,1,4,2,3” 我们从第二个数字开始,这个数字是1,我们的任务只要看看1有没有正确的位置,我们的做法是和这个数字左边的数字来比,因此我们比较1和5,1比5小,所以我们就交换1和5,原来的排列就变成了“1,5,4,2,3 ”接下来,我们看第3个数字有没有在正确的位置。这个数字是4,它的左边数字是5,4比5小,所以我们将4和5交换,排列变成了 “1,4,5,2,3 "我们必须继续看4有没有在正确的位
2021-03-20 16:50:50
240
原创 C语言代码实现二进制存在多少个1的个数,请实现一个函数,输入一个整数,输出该数二进制表示中的1的个数。例:9的二进制表示为1001,有两位是1
C语言代码实现二进制存在多少个1的个数,请实现一个函数,输入一个整数,输出该数二进制表示中的1的个数。例:9的二进制表示为1001,有两位是1;解题思路如果暴力将整数变为二进制,在遍历取得1的个数。如果数据量大,这样做就大大浪费了计算机资源。我们知道一个数与1做&运算,如果这个数是1 那么结果就为1。让我们先复习一下位运算。与运算(&)、或运算(|)、异或运算(^)运算规则:一:与运算符(&)运算规则:0&0=0;0&1=0;1&0=0;1&am
2021-03-20 12:40:35
461
原创 2021-3-18(算法不美)
C语言如何找出数组中重复的数1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均值出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助空间,能否设计一个算法实现?)题目要求1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均值出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助空间,能否设计一个算法实现?位运算异或运算A^A=0;A^B=1;由此可见异或运算可以消除重复数字。根据题
2021-03-18 22:36:43
279
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人