Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python插入排序算法_Python_Algorithm_Python 2.7_Sorting_Insertion Sort - Fatal编程技术网

Python插入排序算法

Python插入排序算法,python,algorithm,python-2.7,sorting,insertion-sort,Python,Algorithm,Python 2.7,Sorting,Insertion Sort,基本上,我正在尝试用python编写一个插入排序算法,我不知道哪里出了问题 #!/usr/bin/env python # coding: utf-8 import random Array = random.sample(range(30), 5) First = 1 Last = len(Array) PositionOfNext = Last – 1 while PositionOfNext >= First: Next = Array(PositionOfNext)

基本上,我正在尝试用python编写一个插入排序算法,我不知道哪里出了问题

#!/usr/bin/env python
# coding: utf-8
import random
Array = random.sample(range(30), 5)
First = 1
Last = len(Array)
PositionOfNext = Last – 1
while PositionOfNext >= First:
    Next = Array(PositionOfNext)
    Current = PositionOfNext
    while (Current < Last) and (Next > Array[Current] + 1):
        Current = Current + 1
        (Array[Current] - 1) = Array[Current]
    Array[Current] = Next
    PositionOfNext = PositionOfNext - 1
print Array
#/usr/bin/env python
#编码:utf-8
随机输入
数组=随机。样本(范围(30),5)
第一个=1
Last=len(数组)
PositionOfNext=Last–1
当PositionOfNext>=第一个时:
下一个=数组(下一个的位置)
当前=下一个的位置
而(当前<上次)和(下一次>阵列[当前]+1):
电流=电流+1
(阵列[当前]-1)=阵列[当前]
数组[当前]=下一个
PositionOfNext=PositionOfNext-1
打印阵列

修复了一些语法问题和一些索引

还取代:

(Array[Current] - 1) = Array[Current]
作者:

代码已完成

#!/usr/bin/env python
# coding: utf-8
import random
Array = random.sample(range(30), 5)
print Array
First = 0
Last = len(Array) - 1
PositionOfNext = Last - 1
while PositionOfNext >= First:
    Next = Array[PositionOfNext]
    Current = PositionOfNext
    while  (Current < Last) and (Array[Current] > Array[Current + 1]):
        Current = Current + 1
        Array[Current - 1], Array[Current] = Array[Current], Array[Current - 1]
    Array[Current] = Next
    PositionOfNext = PositionOfNext - 1
print Array
#/usr/bin/env python
#编码:utf-8
随机输入
数组=随机。样本(范围(30),5)
打印阵列
第一个=0
Last=len(数组)-1
PositionOfNext=Last-1
当PositionOfNext>=第一个时:
下一步=数组[PositionOfNext]
当前=下一个的位置
而(当前<上次)和(数组[当前]>数组[当前+1]):
电流=电流+1
数组[Current-1],数组[Current]=数组[Current],数组[Current-1]
数组[当前]=下一个
PositionOfNext=PositionOfNext-1
打印阵列

那么:

def insertion_sort(x):
    # insertion sort
    # we can optimize for desc, asc if we want to
    # advantages: online, O(nk) for nearly sorted
    x_sorted = [x[0]]
    x_unsorted = x[1::]
    for xx in x_unsorted:
        x_sorted.append(xx) # make room, and/or assume a sorted input list
        for i in range(len(x_sorted)-1):
            if xx < x_sorted[i]: # asc?
                x_sorted[i+1::] = x_sorted[i:-1] # shift old values
                x_sorted[i] = xx # insert new
                break # nothing to do in the inner loop form here on out
            i += 1
    return x_sorted
def插入_排序(x):
#插入排序
#如果需要,我们可以优化desc和asc
#优点:在线,O(nk)为近分类
x_排序=[x[0]]
x_unsorted=x[1::]
对于未排序的x_中的xx:
x_排序。追加(xx)#腾出空间,和/或假设已排序的输入列表
对于范围内的i(len(x_排序)-1):
如果xx
我还没有详细介绍过,但通常最好清楚地指定预期的输出以及您得到的是什么?哦,对了,很抱歉,输出应该是获取数组并使用选择排序过程对其进行排序,我现在遇到的错误是第7行PositionOfNext=Last–1^语法错误:无效语法删除第7行的“-”字符,然后再次键入。它不是
-
,而是其他字符。你可能是从某个地方复制了代码。我知道这可能只是语法问题,但我无法理解它,非常感谢你。没有问题,我对python也相当陌生,仍然在与语法斗争。
def insertionSort(alist):
   for index in range(1,len(alist)):

     currentvalue = alist[index]
     position = index

     while position>0 and alist[position-1]>currentvalue:
         alist[position]=alist[position-1]
         position = position-1

     alist[position]=currentvalue

alist = [54,26,93,17,77,31,44,55,20]
insertionSort(alist)
print(alist)
def insertion_sort(x):
    # insertion sort
    # we can optimize for desc, asc if we want to
    # advantages: online, O(nk) for nearly sorted
    x_sorted = [x[0]]
    x_unsorted = x[1::]
    for xx in x_unsorted:
        x_sorted.append(xx) # make room, and/or assume a sorted input list
        for i in range(len(x_sorted)-1):
            if xx < x_sorted[i]: # asc?
                x_sorted[i+1::] = x_sorted[i:-1] # shift old values
                x_sorted[i] = xx # insert new
                break # nothing to do in the inner loop form here on out
            i += 1
    return x_sorted