Python 交叉排序題

2021-08-01 15:34:29 字數 1959 閱讀 6620

在計蒜客遇到的一道題:

輸入一行 k 個用空格分隔開的整數,依次為 n1

, n2

… nk

。請將所有下標不能被 3 但可以被 2 整除的數在這些數字原有的位置上進行公升序排列,此外,將餘下下標能被 3 整除的數在這些數字原有的位置上進行降序排列。

輸出包括一行,與輸入相對應的若干個整數,為排序後的結果,整數之間用空格分隔。

我的思路如下:

1.根據原列表下標判斷,把列表的元素增添到新列表

2.新列表排序後

3.再根據原列表下標判斷,把新列表增添到最後的列表輸出

方法一:

list = [int(x) for x in raw_input().split(' ')]

list1 = #you can't use "list1 = list2 = list3 = " here!!!

list2 =

list3 =

list_sorted =

num_list1 = num_list2 = num_list3 = 0

for x in range(len(list)):

if (x+1) % 3 != 0 and (x+1) % 2 == 0:

elif (x+1) % 3 == 0:

else:list1 = sorted(list1)

list2 = sorted(list2, reverse = true)

for x in range(len(list)):

if (x+1) % 3 != 0 and (x+1) % 2 == 0:

num_list1 = num_list1 + 1

elif (x+1) % 3 == 0:

num_list2 = num_list2 + 1

else:

num_list3 = num_list3 + 1

print ' '.join(str(x) for x in list_sorted)

方法二:

list = [int(x) for x in raw_input().split(' ')]

list1 = #you can't use "list1 = list2 = list3 = " here!!!

list2 =

list3 =

list_sorted =

num_list1 = num_list2 = num_list3 = 0

for x in list:

if (list.index(x)+1) % 3 != 0 and (list.index(x)+1) % 2 == 0:

elif (list.index(x)+1) % 3 == 0:

else:list1 = sorted(list1)

list2 = sorted(list2, reverse = true)

for x in list:

if (list.index(x)+1) % 3 != 0 and (list.index(x)+1) % 2 == 0:

num_list1 = num_list1 + 1

elif (list.index(x)+1) % 3 == 0:

num_list2 = num_list2 + 1

else:

num_list3 = num_list3 + 1

print ' '.join(str(x) for x in list_sorted)

雖然做了出來,但我覺得方法還不完善,希望大家可以提提意見

python交叉輸出 Python交叉排序

最近在系統學習python的知識,學完排序之後,遇到了乙個排序的具體問題,問題具體描述如下 時間限制 1000ms 空間限制 5000k 輸入一行 k 個用空格分隔開的整數,依次為 n1,n2 nk。請將所有下標不能被 3 但可以被 2 整除的數在這些數字原有的位置上進行公升序排列,此外,將餘下下標...

初識python 交叉排序

好吧,斷斷續續的在計蒜客上學了幾次python,感覺語法很 雖然當年剛從pascal轉到c的時候也覺得c的語法很繁瑣,不過好歹c的編譯器都很nice,debug強大,但是在ubuntu下用sublime進行debug簡直是噩夢 好吧,其實只是自己太懶又太水不願意又不會寫外掛程式 最近想了想以後大概的...

交叉排序 氣泡排序

time limit 1000ms memory limit 32768k 有疑問?點這裡 輸入n個數,把所有奇數字置上的數從小到大排序,把偶數字置上的數從大到小排序。輸入的第一行是乙個正整數 n 2 n 100 第二行是 n個用空格隔開的整數。輸出只有一行 n個數,是按要求排序後的序列,用空格隔開...