![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
yy_coderrrrrr
这个作者很懒,什么都没留下…
展开
-
实现功能(atoi)
将字符串转化为int型整数:1.当字符串中第一个数字之前既不是正负号也不是空格时,直接返回0。如“dakks 34”2.当字符串中数据的大小超过整数的范围时,返回int能表示的最大值或最小值。3.当遇到“+-333”时返回0。 先上自己的代码:#define INT_MAX (2147483647)#define INT_MIN (...原创 2018-08-19 11:55:58 · 888 阅读 · 0 评论 -
排序算法2:选择排序(selection-sort)
主要思路:将数组分为有序和无序两个区域,每次从无序的区域中选择一个最大值(最小值),放到有序区域中,直到无序区域没有数字排序结束。/* * 快速排序(Selection sort) * 1.每次都从未排序的队列中寻找一个最大值,放到未排序数列的头部,直到所有数字排列完成 */void selection_sort(int *nums,int len){ int ma...原创 2018-08-30 21:01:36 · 242 阅读 · 0 评论 -
排序算法1:冒泡排序(bubble sort)
虽然网上已经很多这种排序算法了,但是为了让自己更熟悉一点(也顺便写篇博客),所以准备把基本的那几种算法原理及代码重新写一遍今天先来冒泡算法吧,冒泡算法的基本原理就是通过不断的比较两个相邻元素的大小,如果前一个比后一个大,则交换两个元素的位置,从数组的第一个到最后一个,并不断重复此操作,直到所有的相邻元素都不再需要交换位置,则排序结束。(这样的操作就会每次都把最大的那个元素放到数组的最后面)。...原创 2018-08-29 21:02:00 · 181 阅读 · 0 评论 -
排序算法3:插入排序(insertion sort)
中间停了一天,今天接着写,开始插入排序,插入排序的原理:将给出数组分为两个部分,有序和无序部分,刚开始第一个数字为有序部分,其他为无序部分,每次从无序部分中拿出一个放到有序部分中的正确排序位置,直到无序部分再无数据结束排序/* * 插入排序(insertion sort) * 1.从第一个元素开始,该元素可以认为已经被排序,取出下一个元素,在已经排序的元素序列中从后向前扫描...原创 2018-09-01 13:53:07 · 241 阅读 · 0 评论 -
排序算法4:希尔排序(shell sort)
希尔排序是插入排序的优化版本,实现原理:将未知数组分为以gap为间隔的n个序列(gap的初值通常取需要排序数列的长度,每次排序之后取(gap/3+1)),然后将这n个序列中的数进行比较,例如先对比序列1和序列2中的第一个数字,若序列2中的第一个小于学列1中的第一个则更换两个数的位置,然后比较序列2和序列3中的第一个数字,以此类推,直到gap的数值为1时,排序结束。实现代码:/* * ...原创 2018-09-02 11:59:31 · 153 阅读 · 0 评论 -
排序算法6:快速排序(quick sort)
可能是由于在实际工作用对递归用的实在是太少了,一时没想到什么好方法,所以就看了下别人的代码。参考地址:http://www.cnblogs.com/eniac12/p/5329396.html快速排序的基本原理:选择一个数列中的元素作为一个分界线把数列分为两个部分(大于此数的部分和小于此数的部分),然后再把这两部分做前面相同的处理,直到数列无法再分时,排序结束。(递归的使用)代码如下:...转载 2018-09-08 10:39:56 · 141 阅读 · 0 评论 -
排序算法5:归并排序(merge sort)
归并排序的根本原理是将一个序列先分成一个一个小序列,分别完成排序,然后再将小序列两两合并,直到全部合并完成即排序结束。代码中也是使用这个思路,先将序列分成(n+1)/2个小序列,再慢慢合并,直到全部合并完成。/* 合并序列,只用于合并相邻序列 */void merge_arr(int *nums,int arr1_start,int arr2_start,int end){ in...原创 2018-09-05 20:54:51 · 147 阅读 · 0 评论