Khi cố gắng học Python bằng cách thực hành, tôi đang cố gắng thực hiện và kiểm tra thuật toán sắp xếp nhanh bằng cách sử dụng Python.
Bản thân việc thực hiện không khó, tuy nhiên kết quả của loại có phần khó hiểu:
Khi tôi sắp xếp một danh sách
['35', '-1', '-2', '-7', '-8', '-3', '-4', '20', '-6', '53']
Kết quả cho tôi
['-1', '-2', '-3', '-4', '-6', '-7', '-8', '20', '35', '53']
Vì vậy, danh sách được sắp xếp tuy nhiên các số nguyên âm được sắp xếp theo thứ tự ngược lại.
Tôi nghi ngờ đây có thể là vấn đề với thực tế là tôi đang sắp xếp một danh sách các int được đọc từ một tệp và loại int thực sự không phải là int mà là một cái gì đó khác [có lẽ là chuỗi.] vấn đề này?
Đây là mã để triển khai Quicksort
#quicksort -> the conquer part of the algorithm
def quicksort[input_list, start_index, end_index]:
if start_index < end_index:
#partition the list of integers.
pivot = partition[input_list, start_index, end_index]
#recursive call on both sides of the pivot, that is excluding the pivot itself
quicksort[input_list, start_index, pivot-1]
quicksort[input_list, pivot+1, end_index]
return input_list
#divide part of the algorithm
def partition[input_list, start_index, end_index]:
#declare variables required for sorting
pivot = input_list[start_index]
left = start_index + 1
right = end_index
sorted = False
while not sorted:
#break condition so that left index is crossed with right index
#or if the value of left crosses the pivot value
while left = pivot:
right = right-1
if right < left:
sorted = True
else:
#swap places for left value and the right value cause they are not in order
temp = input_list[left]
input_list[left] = input_list[right]
input_list[right] = temp
#swap the value at start index with what's now at the right half. Then return right for the new pivot
temp = input_list[start_index]
input_list[start_index] = input_list[right]
input_list[right] = temp
return right
Bất kỳ sự giúp đỡ được đánh giá cao. Cảm ơn tất cả các bạn đã dành thời gian và sự giúp đỡ của bạn.
Xin chào, tôi đang cố gắng sắp xếp "danh sách 'các giá trị chứa cả số âm và dương. Tôi đang cố gắng sắp xếp theo thứ tự số từ ít nhất đến giá trị lớn nhất bằng cách sử dụng đôi cho vòng lặp và trao đổi các biến. Tuy nhiên, tôi đã chạy vào một số lỗi khi chạy mã của tôi và tôi nghĩ đó là do các giá trị âm trong mảng "danh sách". Làm thế nào để tôi gặp phải vấn đề này?
Đây là mã python của tôi mà tôi đã viết cho đến nay:
numbers = [11.5, 28.3, 23.5, -4.8, 15.9, -63.1, 79.4, 80.0, 0, 67.4, -11.9, 32.6] length_numbers = len[numbers] for i in numbers: for j in range [0, length_numbers]: if numbers[j] > numbers[j+1]: temp = numbers[j] numbers[j] = numbers[j+1] numbers[j+1] = temp print[numbers]
Bài viết: 11.42111,421
Chủ đề: 435435
Tham gia: Tháng 9 năm 2016Sep 2016
Danh tiếng: 441 441
chỉ dùng:
>>> numbers = [11.5, 28.3, 23.5, -4.8, 15.9, -63.1, 79.4, 80.0, 0, 67.4, -11.9, 32.6] >>> numbers.sort[] >>> numbers [-63.1, -11.9, -4.8, 0, 11.5, 15.9, 23.5, 28.3, 32.6, 67.4, 79.4, 80.0] >>>
Bài viết: 1.2571,257
Chủ đề: 22
Tham gia: Tháng 5 năm 2019May 2019
Danh tiếng: 85 85
Nhưng nếu bạn đang cố gắng tìm hiểu về việc viết một loại bong bóng, lỗi của bạn nằm ở dòng 6. Vì bạn đang so sánh các số [j] với số [j+1] Số truy cập [J+1]. Thay đổi dòng 6 thành
for j in range [0,length_numbers-1]:
Và nó hoạt động tốt.
Python Lambda: Bài tập-12 với giải pháp
Viết một chương trình Python để sắp xếp lại các số dương và âm trong một mảng nhất định bằng Lambda.
Giải pháp mẫu::
Mã Python:
array_nums = [-1, 2, -3, 5, 7, 8, 9, -10]
print["Original arrays:"]
print[array_nums]
result = sorted[array_nums, key = lambda i: 0 if i == 0 else -1 / i]
print["\nRearrange positive and negative numbers of the said array:"]
print[result]
Đầu ra mẫu:
Original arrays: [-1, 2, -3, 5, 7, 8, 9, -10] Rearrange positive and negative numbers of the said array: [2, 5, 7, 8, 9, -10, -3, -1]
Trực quan hóa thực thi mã Python:
Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực hiện chương trình đã nói:
Trình chỉnh sửa mã Python:
Có một cách khác để giải quyết giải pháp này? Đóng góp mã của bạn [và nhận xét] thông qua Disqus.
Trước đây: Viết chương trình Python để tìm giao điểm của hai mảng đã cho bằng Lambda.next: Viết chương trình Python để đếm số chẵn, số lẻ trong một mảng số nguyên nhất định sử dụng Lambda. Write a Python program to find intersection of two given arrays using Lambda.
Next: Write a Python program to count the even, odd numbers in a given array of integers using Lambda.
Python: Lời khuyên trong ngày
Một khối �if-elif� có thể tồn tại mà không có khối khác ở cuối
Tuy nhiên, �Elif không thể tự đứng mà không có bước �IF� trước khi nó:
def check_number[number]: if number > 0: return "Positive" elif number == 0: return "Zero" return "Negative" print[check_number[1]] # Positive
Tham khảo: //bit.ly/3ndmjen