位置: IT常识 - 正文

基于Python的七种经典排序算法是什么(基于python的论文项目有哪些)

编辑:rootadmin

一、排序的基本概念和分类

所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。

推荐整理分享基于Python的七种经典排序算法是什么(基于python的论文项目有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于python的应用,基于python语言,python基于什么,基于python的应用,基于python的论文项目有哪些,基于python的程序设计,基于python的算法,基于python的应用,内容如对您有帮助,希望把文章链接给更多的朋友!

排序的稳定性:经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定的。

内排序和外排序内排序:排序过程中,待排序的所有记录全部放在内存中外排序:排序过程中,使用到了外部存储。通常讨论的都是内排序。

影响内排序算法性能的三个因素:

时间复杂度:即时间性能,高效率的排序算法应该是具有尽可能少的关键字比较次数和记录的移动次数空间复杂度:主要是执行算法所需要的辅助空间,越少越好。算法复杂性。主要是指代码的复杂性。

根据排序过程中借助的主要操作,可把内排序分为:

插入排序交换排序选择排序归并排序

按照算法复杂度可分为两类:

简单算法:包括冒泡排序、简单选择排序和直接插入排序改进算法:包括希尔排序、堆排序、归并排序和快速排序

以下的七种排序算法只是所有排序算法中最经典的几种,不代表全部。

二、 冒泡排序

冒泡排序(Bubble sort):时间复杂度O(n^2)交换排序的一种。其核心思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止。

其实现细节可以不同,比如下面3种:

最简单排序实现:bubble_sort_simple

冒泡排序:bubble_sort

改进的冒泡排序:bubble_sort_advance

#!/usr/bin/envpython#-*-coding:utf-8-*-#Author:LiuJiang#Python3.5#冒泡排序算法classSQList:def__init__(self,lis=None):self.r=lisdefswap(self,i,j):"""定义一个交换元素的方法,方便后面调用。"""temp=self.r[i]self.r[i]=self.r[j]self.r[j]=tempdefbubble_sort_simple(self):"""最简单的交换排序,时间复杂度O(n^2)"""lis=self.rlength=len(self.r)foriinrange(length):forjinrange(i+1,length):iflis[i]>lis[j]:self.swap(i,j)defbubble_sort(self):"""冒泡排序,时间复杂度O(n^2)"""lis=self.rlength=len(self.r)foriinrange(length):j=length-2whilej>=i:iflis[j]>lis[j+1]:self.swap(j,j+1)j-=1defbubble_sort_advance(self):"""冒泡排序改进算法,时间复杂度O(n^2)设置flag,当一轮比较中未发生交换动作,则说明后面的元素其实已经有序排列了。对于比较规整的元素集合,可提高一定的排序效率。"""lis=self.rlength=len(self.r)flag=Truei=0whilei<lengthandflag:flag=Falsej=length-2whilej>=i:iflis[j]>lis[j+1]:self.swap(j,j+1)flag=Truej-=1i+=1def__str__(self):ret=""foriinself.r:ret+="%s"%ireturnretif__name__=='__main__':sqlist=SQList([4,1,7,3,8,5,9,2,6])#sqlist.bubble_sort_simple()#sqlist.bubble_sort()sqlist.bubble_sort_advance()print(sqlist)

简单选择排序(simple selection sort):时间复杂度O(n^2)通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换。

通俗的说就是,对尚未完成排序的所有元素,从头到尾比一遍,记录下最小的那个元素的下标,也就是该元素的位置。再把该元素交换到当前遍历的最前面。其效率之处在于,每一轮中比较了很多次,但只交换一次。因此虽然它的时间复杂度也是O(n^2),但比冒泡算法还是要好一点。

#!/usr/bin/envpython#-*-coding:utf-8-*-#Author:LiuJiang#Python3.5#简单选择排序classSQList:def__init__(self,lis=None):self.r=lisdefswap(self,i,j):"""定义一个交换元素的方法,方便后面调用。"""temp=self.r[i]self.r[i]=self.r[j]self.r[j]=tempdefselect_sort(self):"""简单选择排序,时间复杂度O(n^2)"""lis=self.rlength=len(self.r)foriinrange(length):minimum=iforjinrange(i+1,length):iflis[minimum]>lis[j]:minimum=jifi!=minimum:self.swap(i,minimum)def__str__(self):ret=""foriinself.r:ret+="%s"%ireturnretif__name__=='__main__':sqlist=SQList([4,1,7,3,8,5,9,2,6,0])sqlist.select_sort()print(sqlist)

四、直接插入排序

直接插入排序(Straight Insertion Sort):时间复杂度O(n^2)基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。

#!/usr/bin/envpython#-*-coding:utf-8-*-#Author:LiuJiang#Python3.5#直接插入排序classSQList:def__init__(self,lis=None):self.r=lisdefinsert_sort(self):lis=self.rlength=len(self.r)#下标从1开始foriinrange(1,length):iflis[i]<lis[i-1]:temp=lis[i]j=i-1whilelis[j]>tempandj>=0:lis[j+1]=lis[j]j-=1lis[j+1]=tempdef__str__(self):ret=""foriinself.r:ret+="%s"%ireturnretif__name__=='__main__':sqlist=SQList([4,1,7,3,8,5,9,2,6,0])sqlist.insert_sort()print(sqlist)

该算法需要一个记录的辅助空间。最好情况下,当原始数据就是有序的时候,只需要一轮对比,不需要移动记录,此时时间复杂度为O(n)。然而,这基本是幻想。

五、希尔排序

希尔排序(Shell Sort)是插入排序的改进版本,其核心思想是将原数据集合分割成若干个子序列,然后再对子序列分别进行直接插入排序,使子序列基本有序,最后再对全体记录进行一次直接插入排序。

这里最关键的是跳跃和分割的策略,也就是我们要怎么分割数据,间隔多大的问题。通常将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的结果是基本有序而不是局部有序。下面的例子中通过:increment = int(increment/3)+1来确定“增量”的值。

相关推荐:《Python视频教程》

希尔排序的时间复杂度为:O(n^(3/2))

#!/usr/bin/envpython#-*-coding:utf-8-*-#Author:LiuJiang#Python3.5#希尔排序classSQList:def__init__(self,lis=None):self.r=lisdefshell_sort(self):"""希尔排序"""lis=self.rlength=len(lis)increment=len(lis)whileincrement>1:increment=int(increment/3)+1foriinrange(increment+1,length):iflis[i]<lis[i-increment]:temp=lis[i]j=i-incrementwhilej>=0andtemp<lis[j]:lis[j+increment]=lis[j]j-=incrementlis[j+increment]=tempdef__str__(self):ret=""foriinself.r:ret+="%s"%ireturnretif__name__=='__main__':sqlist=SQList([4,1,7,3,8,5,9,2,6,0,123,22])sqlist.shell_sort()print(sqlist)

六、堆排序

堆是具有下列性质的完全二叉树:每个分支节点的值都大于或等于其左右孩子的值,称为大顶堆;每个分支节点的值都小于或等于其做右孩子的值,称为小顶堆;因此,其根节点一定是所有节点中(最小)的值。

如果按照层序遍历的方式(广度优先)给节点从1开始编号,则节点之间满足如下关系:

堆排序(Heap Sort)就是利用大顶堆或小顶堆的性质进行排序的方法。堆排序的总体时间复杂度为O(nlogn)。(下面采用大顶堆的方式)

其核心思想是:将待排序的序列构造成一个大顶堆。此时,整个序列的值就是堆的根节点。将它与堆数组的末尾元素交换,然后将剩余的n-1个序列重新构造成一个大顶堆。反复执行前面的操作,最后获得一个有序序列。

#!/usr/bin/envpython#-*-coding:utf-8-*-#Author:LiuJiang#Python3.5#堆排序classSQList:def__init__(self,lis=None):self.r=lisdefswap(self,i,j):"""定义一个交换元素的方法,方便后面调用。"""temp=self.r[i]self.r[i]=self.r[j]self.r[j]=tempdefheap_sort(self):length=len(self.r)i=int(length/2)#将原始序列构造成一个大顶堆#遍历从中间开始,到0结束,其实这些是堆的分支节点。whilei>=0:self.heap_adjust(i,length-1)i-=1#逆序遍历整个序列,不断取出根节点的值,完成实际的排序。j=length-1whilej>0:#将当前根节点,也就是列表最开头,下标为0的值,交换到最后面j处self.swap(0,j)#将发生变化的序列重新构造成大顶堆self.heap_adjust(0,j-1)j-=1defheap_adjust(self,s,m):"""核心的大顶堆构造方法,维持序列的堆结构。"""lis=self.rtemp=lis[s]i=2*swhilei<=m:ifi<mandlis[i]<lis[i+1]:i+=1iftemp>=lis[i]:breaklis[s]=lis[i]s=ii*=2lis[s]=tempdef__str__(self):ret=""foriinself.r:ret+="%s"%ireturnretif__name__=='__main__':sqlist=SQList([4,1,7,3,8,5,9,2,6,0,123,22])sqlist.heap_sort()print(sqlist)基于Python的七种经典排序算法是什么(基于python的论文项目有哪些)

堆排序的运行时间主要消耗在初始构建堆和重建堆的反复筛选上。其初始构建堆时间复杂度为O(n)。正式排序时,重建堆的时间复杂度为O(nlogn)。所以堆排序的总体时间复杂度为O(nlogn)。

堆排序对原始记录的排序状态不敏感,因此它无论最好、最坏和平均时间复杂度都是O(nlogn)。在性能上要好于冒泡、简单选择和直接插入算法。

空间复杂度上,只需要一个用于交换的暂存单元。但是由于记录的比较和交换是跳跃式的,因此,堆排序也是一种不稳定的排序方法。

此外,由于初始构建堆的比较次数较多,堆排序不适合序列个数较少的排序工作。

七、归并排序

归并排序(Merging Sort):建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

#!/usr/bin/envpython#-*-coding:utf-8-*-#Author:LiuJiang#Python3.5#归并排序classSQList:def__init__(self,lis=None):self.r=lisdefswap(self,i,j):"""定义一个交换元素的方法,方便后面调用。"""temp=self.r[i]self.r[i]=self.r[j]self.r[j]=tempdefmerge_sort(self):self.msort(self.r,self.r,0,len(self.r)-1)defmsort(self,list_sr,list_tr,s,t):temp=[Noneforiinrange(0,len(list_sr))]ifs==t:list_tr[s]=list_sr[s]else:m=int((s+t)/2)self.msort(list_sr,temp,s,m)self.msort(list_sr,temp,m+1,t)self.merge(temp,list_tr,s,m,t)defmerge(self,list_sr,list_tr,i,m,n):j=m+1k=iwhilei<=mandj<=n:iflist_sr[i]<list_sr[j]:list_tr[k]=list_sr[i]i+=1else:list_tr[k]=list_sr[j]j+=1k+=1ifi<=m:forlinrange(0,m-i+1):list_tr[k+l]=list_sr[i+l]ifj<=n:forlinrange(0,n-j+1):list_tr[k+l]=list_sr[j+l]def__str__(self):ret=""foriinself.r:ret+="%s"%ireturnretif__name__=='__main__':sqlist=SQList([4,1,7,3,8,5,9,2,6,0,12,77,34,23])sqlist.merge_sort()print(sqlist)

另外一个版本:

defmerge(lfrom,lto,low,mid,high):"""两段需要归并的序列从左往右遍历,逐一比较,小的就放到lto里去,lfrom下标+1,lto下标+1,然后再取,再比,再放,最后lfrom里的两段比完了,lto里留下的就是从小到大排好的一段。:paramlfrom:原来的列表:paramlto:缓存的列表:paramlow:左边一段的开头下标:parammid:左右两段的中间相隔的下标:paramhigh:右边一段的最右下标:return:"""i,j,k=low,mid,lowwhilei<midandj<high:iflfrom[i]<=lfrom[j]:lto[k]=lfrom[i]i+=1else:lto[k]=lfrom[j]j+=1k+=1whilei<mid:lto[k]=lfrom[i]i+=1k+=1whilej<high:lto[k]=lfrom[j]j+=1k+=1defmerge_pass(lfrom,lto,llen,slen):"""用来处理所有需要合并的段,这需要每段的长度,以及列表的总长。最后的if语句处理表最后部分不规则的情况。:paramlfrom:原来的列表:paramlto:缓存的列表:paramllen:列表总长:paramslen:每段的长度:return:"""i=0whilei+2*slen<llen:merge(lfrom,lto,i,i+slen,i+2*slen)i+=2*slenifi+slen<llen:merge(lfrom,lto,i,i+slen,llen)else:forjinrange(i,llen):lto[j]=lfrom[j]defmerge_sort(lst):"""主函数。先安排一个同样大小的列表,作为辅助空间。然后在两个列表直接做往复的归并,每归并一次slen的长度增加一倍,逐渐向llen靠拢,当slen==llen时说明归并结束了。归并完成后最终结果可能恰好保存在templist里,因此代码里做两次归并,保证最后的结果体现在原始的lst列表里。:paramlst:要排序的原始列表:return:"""slen,llen=1,len(lst)templist=[None]*llenwhileslen<llen:merge_pass(lst,templist,llen,slen)slen*=2merge_pass(templist,lst,llen,slen)slen*=2

归并排序对原始序列元素分布情况不敏感,其时间复杂度为O(nlogn)。

归并排序在计算过程中需要使用一定的辅助空间,用于递归和存放结果,因此其空间复杂度为O(n+logn)。

归并排序中不存在跳跃,只有两两比较,因此是一种稳定排序。

总之,归并排序是一种比较占用内存,但效率高,并且稳定的算法。

八、快速排序

快速排序(Quick Sort)由图灵奖获得者Tony Hoare发明,被列为20世纪十大算法之一。冒泡排序的升级版,交换排序的一种。快速排序的时间复杂度为O(nlog(n))。

快速排序算法的核心思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后分别对这两部分继续进行排序,以达到整个记录集合的排序目的。

#!/usr/bin/envpython#-*-coding:utf-8-*-#Author:LiuJiang#Python3.5#快速排序classSQList:def__init__(self,lis=None):self.r=lisdefswap(self,i,j):"""定义一个交换元素的方法,方便后面调用。"""temp=self.r[i]self.r[i]=self.r[j]self.r[j]=tempdefquick_sort(self):"""调用入口"""self.qsort(0,len(self.r)-1)defqsort(self,low,high):"""递归调用"""iflow<high:pivot=self.partition(low,high)self.qsort(low,pivot-1)self.qsort(pivot+1,high)defpartition(self,low,high):"""快速排序的核心代码。其实就是将选取的pivot_key不断交换,将比它小的换到左边,将比它大的换到右边。它自己也在交换中不断变换自己的位置,直到完成所有的交换为止。但在函数调用的过程中,pivot_key的值始终不变。:paramlow:左边界下标:paramhigh:右边界下标:return:分完左右区后pivot_key所在位置的下标"""lis=self.rpivot_key=lis[low]whilelow<high:whilelow<highandlis[high]>=pivot_key:high-=1self.swap(low,high)whilelow<highandlis[low]<=pivot_key:low+=1self.swap(low,high)returnlowdef__str__(self):ret=""foriinself.r:ret+="%s"%ireturnretif__name__=='__main__':sqlist=SQList([4,1,7,3,8,5,9,2,6,0,123,22])sqlist.quick_sort()print(sqlist)

另外一个版本:

defquick_sort(nums):#封装一层的目的是方便用户调用defqsort(lst,begin,end):ifbegin>=end:returni=beginkey=lst[begin]forjinrange(begin+1,end+1):iflst[j]<key:i+=1lst[i],lst[j]=lst[j],lst[i]lst[begin],lst[i]=lst[i],lst[begin]qsort(lst,begin,i-1)qsort(lst,i+1,end)qsort(nums,0,len(nums)-1)

快速排序的时间性能取决于递归的深度。当pivot_key恰好处于记录关键码的中间值时,大小两区的划分比较均衡,接近一个平衡二叉树,此时的时间复杂度为O(nlog(n))。当原记录集合是一个正序或逆序的情况下,分区的结果就是一棵斜树,其深度为n-1,每一次执行大小分区,都要使用n-i次比较,其最终时间复杂度为O(n^2)。在一般情况下,通过数学归纳法可证明,快速排序的时间复杂度为O(nlog(n))。但是由于关键字的比较和交换是跳跃式的,因此,快速排序是一种不稳定排序。同时由于采用的递归技术,该算法需要一定的辅助空间,其空间复杂度为O(logn)。

下面是一个实例测试数据:

从数据中可见:

数据过万,冒泡算法基本不可用。测试时间忠实的反映了n平方的时间复杂度,数据扩大10倍,耗时增加100倍对于Python的列表,反序遍历比正序遍历还是要消耗一定的时间的快速排序在数据较大时,其威力显现,但不够稳定,总体还是维护了nlog(n)的复杂度。

基本的快速排序还有可以优化的地方:

1. 优化选取的pivot_key

前面我们每次选取pivot_key的都是子序列的第一个元素,也就是lis[low],这就比较看运气。运气好时,该值处于整个序列的靠近中间值,则构造的树比较平衡,运气比较差,处于或最小位置附近则构造的树接近斜树。为了保证pivot_key选取的尽可能适中,采取选取序列左中右三个特殊位置的值中,处于中间值的那个数为pivot_key,通常会比直接用lis[low]要好一点。在代码中,在原来的pivot_key = lis[low]这一行前面增加下面的代码:

m=low+int((high-low)/2)iflis[low]>lis[high]:self.swap(low,high)iflis[m]>lis[high]:self.swap(high,m)iflis[m]>lis[low]:self.swap(m,low)

如果觉得这样还不够好,还可以将整个序列先划分为3部分,每一部分求出个pivot_key,再对3个pivot_key再做一次上面的比较得出最终的pivot_key。这时的pivot_key应该很大概率是一个比较靠谱的值。

2. 减少不必要的交换

原来的代码中pivot_key这个记录总是再不断的交换中,其实这是没必要的,完全可以将它暂存在某个临时变量中,如下所示:

defpartition(self,low,high):lis=self.rm=low+int((high-low)/2)iflis[low]>lis[high]:self.swap(low,high)iflis[m]>lis[high]:self.swap(high,m)iflis[m]>lis[low]:self.swap(m,low)pivot_key=lis[low]#temp暂存pivot_key的值temp=pivot_keywhilelow<high:whilelow<highandlis[high]>=pivot_key:high-=1#直接替换,而不交换了lis[low]=lis[high]whilelow<highandlis[low]<=pivot_key:low+=1lis[high]=lis[low]lis[low]=tempreturnlow

3. 优化小数组时的排序

快速排序算法的递归操作在进行大量数据排序时,其开销能被接受,速度较快。但进行小数组排序时则不如直接插入排序来得快,也就是杀鸡用牛刀,未必就比菜刀来得快。因此,一种很朴素的做法就是根据数据的多少,做个使用哪种算法的选择而已,如下改写qsort方法:

defqsort(self,low,high):"""根据序列长短,选择使用快速排序还是简单插入排序"""#7是一个经验值,可根据实际情况自行决定该数值。MAX_LENGTH=7ifhigh-low<MAX_LENGTH:iflow<high:pivot=self.partition(low,high)self.qsort(low,pivot-1)self.qsort(pivot+1,high)else:#insert_sort方法是我们前面写过的简单插入排序算法self.insert_sort()

4. 优化递归操作

可以采用尾递归的方式对整个算法的递归操作进行优化,改写qsort方法如下:

defqsort(self,low,high):"""根据序列长短,选择使用快速排序还是简单插入排序"""#7是一个经验值,可根据实际情况自行决定该数值。MAX_LENGTH=7ifhigh-low<MAX_LENGTH:#改用while循环whilelow<high:pivot=self.partition(low,high)self.qsort(low,pivot-1)#采用了尾递归的方式low=pivot+1else:#insert_sort方法是我们前面写过的简单插入排序算法self.insert_sort()

九、排序算法总结

排序算法的分类:

没有十全十美的算法,有有点就会有缺点,即使是快速排序算法,也只是整体性能上的优越,也存在排序不稳定,需要大量辅助空间,不适于少量数据排序等缺点。

七种排序算法性能对比

本文链接地址:https://www.jiuchutong.com/zhishi/303231.html 转载请保留说明!

上一篇:ps怎么把多余的人p掉(ps怎么把多余的p掉)

下一篇:WordPress限制标签云数量(wordpress标签tag文章)

  • 剪映怎么分三屏满屏(剪映怎么分三屏不一样的内容)

    剪映怎么分三屏满屏(剪映怎么分三屏不一样的内容)

  • beats flex怎么充电

    beats flex怎么充电

  • 支付宝访客记录的查看方式(支付宝访客记录保存多久?)

    支付宝访客记录的查看方式(支付宝访客记录保存多久?)

  • 微信怎么取消爱奇艺自动续费(微信怎么取消爱奇艺自动扣款收费)

    微信怎么取消爱奇艺自动续费(微信怎么取消爱奇艺自动扣款收费)

  • 发微信图片和文字怎么一起发(发微信 图片)

    发微信图片和文字怎么一起发(发微信 图片)

  • 手机屏幕有抖音残影怎么办(手机屏幕有抖音印记怎么回事)

    手机屏幕有抖音残影怎么办(手机屏幕有抖音印记怎么回事)

  • wifl已连接不可上网(wifi已连接不可)

    wifl已连接不可上网(wifi已连接不可)

  • 华为手机volte设置在哪里设置(华为手机volte设置在哪里设置给人拨打电话号码异常)

    华为手机volte设置在哪里设置(华为手机volte设置在哪里设置给人拨打电话号码异常)

  • soul卸载后重新下载聊天记录还在吗(soul卸载后重新安装怎么恢复聊天记录)

    soul卸载后重新下载聊天记录还在吗(soul卸载后重新安装怎么恢复聊天记录)

  • 笔记本死机怎么强制关机(笔记本无法开机怎么解决)

    笔记本死机怎么强制关机(笔记本无法开机怎么解决)

  • p40pro有红外遥控吗(p40pro红外遥控不能用)

    p40pro有红外遥控吗(p40pro红外遥控不能用)

  • 荣耀30和p30区别(华为荣耀30和p30哪个性价比高)

    荣耀30和p30区别(华为荣耀30和p30哪个性价比高)

  • 手机号注册微信注销后还能重新注册吗(手机号注册微信提示网络出错)

    手机号注册微信注销后还能重新注册吗(手机号注册微信提示网络出错)

  • 手机免打扰怎么设置(手机免打扰怎么开)

    手机免打扰怎么设置(手机免打扰怎么开)

  • 诺基亚2720国内啥时候上市(诺基亚2720什么时候国内开始销售)

    诺基亚2720国内啥时候上市(诺基亚2720什么时候国内开始销售)

  • word怎么添加自动编号(Word怎么添加自定义封面)

    word怎么添加自动编号(Word怎么添加自定义封面)

  • 荣耀v20重量(荣耀v20重量为多少g)

    荣耀v20重量(荣耀v20重量为多少g)

  • 手机更新不了怎么办(手机更新不了怎么办而且还是苹果5)

    手机更新不了怎么办(手机更新不了怎么办而且还是苹果5)

  • 苹果x为什么用电特别快(苹果x为什么用不了电信卡)

    苹果x为什么用电特别快(苹果x为什么用不了电信卡)

  • 苹果11是不是高通基带(苹果11是不是高清屏幕)

    苹果11是不是高通基带(苹果11是不是高清屏幕)

  • 苹果机发热正常吗(苹果手机发烫正常)

    苹果机发热正常吗(苹果手机发烫正常)

  • 手机如何打开url(手机如何打开url格式)

    手机如何打开url(手机如何打开url格式)

  • 微信丢了如何找回来(微信丢了如何找回原来的微信密码)

    微信丢了如何找回来(微信丢了如何找回原来的微信密码)

  • 华为手机通话时不能上网(华为手机通电话)

    华为手机通话时不能上网(华为手机通电话)

  • 菜鸟裹裹如何线上支付(菜鸟裹裹如何线上寄件)

    菜鸟裹裹如何线上支付(菜鸟裹裹如何线上寄件)

  • 使用D435i相机跑ORB-SLAM2_RGBD_DENSE_MAP-master稠密建图编译(实时彩色点云地图加回环+保存点云地图)(相机4244)

    使用D435i相机跑ORB-SLAM2_RGBD_DENSE_MAP-master稠密建图编译(实时彩色点云地图加回环+保存点云地图)(相机4244)

  • 增值税专用发票丢失了要怎么处理
  • 退休职工能否扣医保
  • 个税系统中的离线算税和在线算税结果一样吗
  • 从价计征房产税怎么算 原值和出租房原值
  • 购房发票是不是增值税
  • 个体注销了名下的车辆
  • 个税属于会计中的什么科目
  • 发票上的密码区有什么用
  • 账簿登记的基本要求
  • 对方电子承兑发出多长时间可以到账
  • 出售固定资产取得的收入
  • 年底给职工发啥实物
  • 发票的单价开得太低了怎么办?
  • 税控技术服务费计入什么科目
  • 提前报废资产损失税前扣除
  • 行车记录仪怎么开发票
  • 会务费抵扣限额
  • 机动车类专用发票
  • 代开普票需要具备哪些资料?
  • 旅游业务开什么发票
  • 减免的土地出让金销项税额可以抵减吗
  • 预缴企业所得税研发费用加计扣除
  • 商业承兑汇票背书转让流程图
  • 开发人员选项怎么改定位
  • 一张抵扣发票能分多次抵扣不
  • 现金流量表的填制方法和构成
  • 公司注销后款未收完怎么办
  • 税收滞纳金变化
  • 年末计提银行借款利息
  • 转让房产缴纳增值税可以用留底税吗
  • 企业为员工购买社保缴费标准
  • efi bios u盘启动
  • 结转净利润到利润分配
  • 加油站的成品油经营许可证过期3个月还能换证吗?
  • c盘显示隐藏
  • PHP:oci_set_edition()的用法_Oracle函数
  • dgservice.exe是什么
  • 冲销上月计提费用
  • win7旗舰系统
  • 已冲销凭证是否可以作废
  • 司法拍卖所购的房产
  • 收到某单位投入一批原材料
  • 《一文搞懂IoU发展历程》GIoU、DIoU、CIoU、EIoU、αIoU、SIoU
  • 增票的纳税人识别号是啥
  • ps使用背景橡皮擦的时候需要按住什么键
  • 外经证预缴税款之后剩下的税款交到哪呢
  • 每个月计提折旧的分录
  • 织梦停止更新了吗
  • 长期股权投资初始投资成本的确定
  • 非货币性资产交换以公允价值为基础进行计量
  • 固定资产被盗报警
  • 决算清理期和库款报解整理期
  • 五险一金没有金
  • 现金发放工资有什么风险
  • 股东往来款算投资款吗
  • 销售商品的运费的税费计入进项税额
  • 装修费一定要摊销吗
  • 建立固定资产管理台账
  • 固定资产为什么要提减值准备
  • 资产减值损失是负的意味着什么
  • 单位租赁个人房子怎么缴纳房产税
  • 进项税的发票
  • 使用mysql进行模糊查询
  • mysql数据库基础与实践课后答案
  • linux设置时间日期
  • mac电脑上的通讯录怎么同步到手机上
  • win7任务栏显示预览窗口
  • win8.1优化工具
  • jquery window
  • 谈谈Jquery ajax中success和complete有哪些不同点
  • pygame有哪些函数
  • js数组菜鸟教程
  • android 资源管理器
  • websocket解决跨域
  • 数据库的列名是什么
  • python matplotlab
  • javascript制作小程序
  • js混杂模式
  • javascript基础
  • 四川社保2020增资方案
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设