例子:
在乙個鍊錶中,每個節點包含乙個名字和分數,然後需要按照分數來進行排序然後進行輸出,這裡就可以用到箱子排序
首先得到最大數和最小數之間的數目個數:
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.插入排序 插入排序是一種簡單直觀的排序演算法。它的工作原理非常類似於我們抓撲克牌 對於未排序資料 右手抓到的牌 在已排序序列 左手已經排好序的手牌 中從後向前掃瞄,找到相應位置...