常用的内部排序算法
常用的内部排序算法
简单选择排序、直接插入排序和冒泡排序、折半插入排序、希尔排序算法、快速排序算法(递归和非递归)、堆排序
(图片来源网络,侵删)
运行结果:
python
输入数据15,5,6,7,8,9,10
[外链图片转存中…(img-60STknHj-1720750359076)]
[外链图片转存中…(img-QWNWapS5-1720750359078)]
[外链图片转存中…(img-fVhvkUVx-1720750359079)]
C语言
输入数据8 6 80 50 40
[外链图片转存中…(img-yKdnpElL-1720750359079)]
[外链图片转存中…(img-MlEA4ULs-1720750359080)]
[外链图片转存中…(img-D81R9SPg-1720750359080)]
代码
Python代码
import tkinter as tk
from tkinter import ttk
class SortAlgorithms:
def __init__(self):
self.comparisons = 0
self.moves = 0
def reset_counters(self):
self.comparisons = 0
self.moves = 0
def bubble_sort(self, arr):
self.reset_counters()
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
self.comparisons += 1
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
self.moves += 1
yield arr[:]
def selection_sort(self, arr):
self.reset_counters()
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i + 1, n):
self.comparisons += 1
if arr[j] = 0 and key 0:
for i in range(gap, n):
temp = arr[i]
j = i
while j >= gap and arr[j - gap] > temp:
self.comparisons += 1
arr[j] = arr[j - gap]
self.moves += 1
j -= gap
yield arr[:]
arr[j] = temp
self.moves += 1
yield arr[:]
gap //= 2
def quick_sort(self, arr):
self.reset_counters()
def _quick_sort(items, low, high):
if low pivot:
right -= 1
self.comparisons += 1
if left >= right:
return right
items[left], items[right] = items[right], items[left]
self.moves += 1
def heap_sort(self, arr):
self.reset_counters()
n = len(arr)
def heapify(arr, n, i):
largest = i
l = 2 * i + 1
r = 2 * i + 2
if l
C语言代码
#include
#include
int comparisons = 0;
int moves = 0;
void reset_counters() {
comparisons = 0;
moves = 0;
}
void print_array(int arr[], int size) {
for (int i = 0; i arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
moves++;
print_array(arr, size);
}
}
}
}
void selection_sort(int arr[], int size) {
reset_counters();
for (int i = 0; i = 0 && arr[j] > key) {
comparisons++;
arr[j + 1] = arr[j];
moves++;
j--;
print_array(arr, size);
}
arr[j + 1] = key;
moves++;
print_array(arr, size);
}
}
void shell_sort(int arr[], int size) {
reset_counters();
for (int gap = size / 2; gap > 0; gap /= 2) {
for (int i = gap; i = gap && arr[j - gap] > temp; j -= gap) {
comparisons++;
arr[j] = arr[j - gap];
moves++;
print_array(arr, size);
}
arr[j] = temp;
moves++;
print_array(arr, size);
}
}
}
void quick_sort(int arr[], int left, int right) {
if (left = pivot) {
comparisons++;
j--;
}
if (i arr[largest]) {
comparisons++;
largest = r;
}
if (largest != i) {
int temp = arr[i];
arr[i] = arr[largest];
arr[largest] = temp;
moves++;
print_array(arr, size);
heapify(arr, size, largest);
}
}
void heap_sort(int arr[], int size) {
reset_counters();
for (int i = size / 2 - 1; i >= 0; i--) {
heapify(arr, size, i);
}
for (int i = size - 1; i > 0; i--) {
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
moves++;
print_array(arr, size);
heapify(arr, i, 0);
}
}
int main() {
int choice, size;
printf("请输入要排序的数组大小: ");
scanf("%d", &size);
int arr[size];
printf("请输入数组元素 (用空格隔开): ");
for (int i = 0; i
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
