排序演算法之簡單排序

2021-09-08 12:50:24 字數 1487 閱讀 4530

進入找工作倒計時狀態了,計畫好好複習一下資料結構和相關演算法,估計用兩天時間把見過的排序演算法整理下,首先看一下時間複雜度為o(n2)的演算法。

首先參考大話資料結構定義乙個鍊錶類:

#include #define maxsize 1000

using namespace std;

class sqlist

sqlist(int length1,int value=0):length(length1)

data[length]=value;

length++; }

friend ostream& operator<<(ostream& output, sqlist list);

public:

int data[maxsize];

int length;

};void swap(int& a,int &b)

ostream& operator<<(ostream& output, sqlist list)

length--; }}

void bubblesort2(sqlist* list) }

}

選擇排序法:

/**

*選取排序即每次在未排序佇列其中選取乙個最小值。然後與第i個值進行交換,直至i為length為止;

*當然。也能夠選取最大值把到後面,依據需求而定

*/void selectsort(sqlist* list)

} if (pos != i)

}}

簡單插入排序法:

/**

*遍歷鍊錶,把每乙個元素插入到正確位置

*/void insertsort1(sqlist *list)

int tmp = list->data[i];

for (int k = i; k > j+1; --k)

list->data[j + 1] = tmp; }}

void insertsort2(sqlist *list)

list->data[j + 1] = tmp;

} }}

希爾排序法(簡單插入排序的改進):

/**

*希爾排序是插入排序的一種改進,可以理解為把乙個陣列分成幾個小的陣列進行插入排序,再合併使原陣列基本有序。

*希爾排序乙個非常關鍵的步驟是增量的選取。合適的增量可以提高排序效率,但不合適的增量可能會導致程式崩潰或結果錯誤。

*其次。希爾排序也不是乙個穩定的排序演算法。由於它是跳躍插入排序的。

*希爾排序僅僅是比前面幾種o(n2)的效果稍好,並不會優於後面要提到的高速排序等演算法。

*/ void shellsort(sqlist* list) list->data[j + increment] = tmp; } } } while (increment > 1); }

演算法 之 簡單排序

這裡介紹三種常用的排序演算法 氣泡排序 選擇排序 插入排序。1.氣泡排序 氣泡排序是一種簡單的排序,它通過元素的兩兩比較,不斷的將大的或小的元素向左或向右移動,通過這種方式來實現排序。如下面是實現由小到大的排序 外層迴圈out一開始為nelems 1,這代表元素的最大位置。內層迴圈從位置0和位置1的...

演算法之簡單排序

示例 氣泡排序 複雜度 比較次數 n n 1 2 o n的平方 移動次數 平均移動 n的平方 4 所以複雜度也為n n 1 2 o n的平方 public void bubblesort inttemp for int i 0 i for int i 0 i 列印 for int i 0 i 選擇排...

JS 排序演算法之簡單排序

目錄 function bubblesort ary 如果沒有發生交換 表明排序完成 直接退出排序 if exchange break return ary 效果示例 function straightinsertionsort ary while j 0 temp ary j 找到temp需要插入...