演算法複習 箱子排序

2021-07-02 00:02:20 字數 927 閱讀 5403

例子:

在乙個鍊錶中,每個節點包含乙個名字和分數,然後需要按照分數來進行排序然後進行輸出,這裡就可以用到箱子排序

首先得到最大數和最小數之間的數目個數:

maxnum-minnum

然後建立乙個陣列(鍊錶)指標來分別儲存這幾個數的內容

比如:分數為0的有: 張三,李四,王五

分數為1的有:賀6

分數為2的有:李七

就用3個鍊錶(陣列)指標來儲存他們的資訊

然後在分別對分數0,1, 2中的人取出來,放到乙個新的物件指標中,這個鍊錶指標中存在的元素就是已經排好序的了。

採用陣列指標實現的演算法如下:

// theboxsort.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include#includeusing namespace std;

int main();

int max = *(max_element(data, data + sizeof(data) / sizeof(data[0])));

int min = *(min_element(data, data + sizeof(data) / sizeof(data[0])));

int *order = new int[max - min + 1];

for (int i = 0; i < max - min + 1; i++)

for (int i = 0; i < sizeof(data) / sizeof(data[0]); i++)

for (int i = 0; i < max - min + 1; i++)

}cout << endl;

getchar();

getchar();

}

原始碼的實現來自部落格:

經典演算法 箱子排序

include include include typedef struct studentstu stu student 40 int main else if student j number bottom number else head p for c 0 cname,head number...

排序演算法複習

參考自 直接插入排序 從小到大排列 n個資料,第乙個資料平凡有序 假設前i 1個資料串有序,根據第i個的大小將第i個插入到此串中,則前i個的資料串也有序。因此可得到n個資料有序。插入方法 待插入元素為第i元素,數值存為temp,將 i 之前的元素 j 從第 i 1 元素開始與之比較 如果比temp大...

演算法複習 排序

排序中主要有插入排序 氣泡排序 歸併排序 快速排序等 主要從空間消耗 時間複雜度 最差時間複雜度等方面考慮演算法的好處 1.插入排序 插入排序是一種簡單直觀的排序演算法。它的工作原理非常類似於我們抓撲克牌 對於未排序資料 右手抓到的牌 在已排序序列 左手已經排好序的手牌 中從後向前掃瞄,找到相應位置...