排序算法包括:
插入排序(insert sort)
快速排序(quick sort)
快速选择(quick select)
堆排序(heap select)
http://stackoverflow.com/questions/1034846/finding-nth-item-of-unsorted-list-without-sorting-the-list/1036240#1036240
http://en.wikipedia.org/wiki/Quick_select
下面是我写的一些丑陋代码
def insert_sort(target,obj): if target[0]==None: target[0]=obj return target for i in xrange(len(target)): if obj>target[i] and (obj<target[i+1] or target[i+1]==None) : j = i+1 k = len(target)-1 while k>j: target[k] = target[k-1] k=k-1 target[j] = obj break return target target = [None for x in range(10)] for x in [1,17,14,3,19,7,2,4,10]: print insert_sort(target,x)
参考:
相关推荐
在这个压缩包“算法-基础算法- 排序算法(包含源程序).rar”中,你将找到关于排序算法的详细讲解以及可能包含的源代码实现。这篇文章将深入探讨排序算法的基本概念、类型以及它们在实际应用中的价值。 排序算法的...
例如,排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等,它们各有优劣,在不同场景下有不同的效率表现。搜索算法则包括深度优先搜索(DFS)和广度优先搜索(BFS),在解决迷宫问题、树遍历等问题时...
【基础算法】-C语言实现归并排序归并排序算法思路先将待排序的序列拆分成若干小规模子序列,直到每个子序列可以直接排序为止。然后对每个子序列进行排序,合并成新的有序序列。重复第二步,直到只剩下一个排序完毕的...
【基础算法】-python希尔排序# python实现希尔排序(插入排序的一种)# 先宏观进行调整,在进行微观调整 def shellSort(lst, k, reverse=False): length = len(lst) dk = k # 设置一个增量dk while dk > 0: for i in ...
直接选择排序作为一种基础的排序算法,其设计简洁,易于理解和实现,但其效率在处理大规模数据集时并不理想。本文将详细探讨直接选择排序的理论基础、实现方法及其优缺点,同时为对直接选择排序感兴趣的读者提供更...
【基础算法】-python递归冒泡排序法 # Python 中使用递归实现冒泡排序的方法: def bubble_sort_recursive(arr, n=None): if n is None: n = len(arr) if n == 1: return arr for i in range(n-1): if arr[i] ...
总的来说,Floyd算法、Dijkstra算法和拓扑排序算法是图论中的基础且实用的工具,它们在解决实际问题时具有广泛的应用。熟练掌握这些算法,不仅能够提升编程技能,还能为解决复杂问题提供有力的理论支持。
排序算法是计算机科学中的基础且关键的部分,它在处理大量数据时扮演着重要角色。排序算法的效率直接影响到程序的运行速度,特别是在大数据量的情况下。衡量一个排序算法的性能主要看其时间复杂度,通常用大O符号(O...
这个压缩包"算法-理论基础- 排序(包含源程序).rar"显然包含了关于排序算法的理论基础以及源代码实现,这对我们深入理解和实践这些算法提供了宝贵的资源。 首先,让我们探讨排序算法的理论基础。排序,简单来说,...
在编程竞赛、数据结构与算法的学习中,选择排序是一个基础概念,有助于理解排序算法的基本原理。在实际编程中,尽管选择排序并不常用,但对于学习者来说,它是理解其他更高效排序算法(如快速排序和归并排序)的良好...
插入排序是一种基础且直观的排序算法,它的工作原理可以类比于整理扑克牌。在实际应用中,插入排序对于小规模数据或者部分有序的数据表现优秀,但对于大规模无序数据,其效率相对较低。以下是关于插入排序的详细知识...
**插入排序**是一种基础且直观的排序算法,广泛应用于计算机科学和编程领域。它的工作原理类似于我们日常整理扑克牌的过程,逐步将未排序的元素插入到已排序的序列中,确保每次插入后序列都是有序的。 ### 插入排序...
从提供的文件【标题】:"数据结构和算法-思维导图.pdf" 可以提炼出以下知识点: 1. **时间复杂度和空间复杂度分析**: - 最好、最坏、平均和均摊时间复杂度的概念,例如O(1)代表常数时间复杂度,适合散列列表的...
【零基础学算法--自己花钱买的资料】 在学习算法的过程中,尤其对于初学者,找到一套合适的教程至关重要。"零基础学算法"是一个专为没有算法背景的初学者设计的学习资源,旨在帮助他们从零开始逐步掌握算法的基础...
《排序算法-StdDraw动态展示源码》 在计算机科学中,排序算法是处理数据的一种基本技巧,它用于将一组无序的数据按照特定顺序排列。本项目提供的源码旨在通过StdDraw工具动态地展示各种排序算法的过程,帮助学习者...
冒泡排序是一种基础且经典的排序算法,它的基本思想是通过重复遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序...
《信息学竞赛宝典--基础算法》,人民邮电出版社 c++基础算法视频讲解---第7章 第7章 7.1.1直接插入排序 7.1.2双关键字排序 7.1.3紧急集合 7.2.1求逆序对数 ...第07章 排序算法 第08章 高精度算法 第09章 搜索算法
- O(n log n):这种复杂度通常出现在分治策略或排序算法中,如归并排序和快速排序。 - O(n^2):这是常见的低效复杂度,如冒泡排序和简单选择排序,当输入量增大时,执行时间会迅速增长。 了解并分析算法的时间...
总的来说,C#中的选择排序算法是一种基础排序算法,虽然在实际应用中可能不是最佳选择,但了解其原理和实现有助于提升对排序算法的理解。通过这个项目,你可以学习到如何在C#中编写排序算法,并进行实际的代码实践。
本文将深入探讨两种基础且常见的排序算法:冒泡排序和选择排序。这两种算法都是简单直观的排序方法,但它们在性能和适用场景上有所不同。 **冒泡排序**: 冒泡排序是一种交换排序,通过不断比较相邻元素并交换位置...