排序演算法(一)

2022-09-23 13:51:07 字數 1166 閱讀 4196

#include #define maxsize 1000 using namespace std; class sqlist sqlist(int length1,int value=0):length(length1) data[length]=value; length++; } friend ostream& operator<氣泡排序法:

/***氣泡排序即相鄰的兩者相互比較,根據需求把較大的或較小的前移或後移

*記住,兩兩相鄰的比較是氣泡排序的特點之一

*/void bubblesort1(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);

}

排序演算法(一)

這個學期課程很少,空閒時間很多,故重新複習了一下 演算法導論 中的常用演算法和資料結構,並且將實現 儲存到部落格,以便大三暑假找實習時方便複習。直接插入排序的思想非常簡單,將序列中第乙個元素作為乙個有序序列,然後將剩下的n 1個元素按關鍵字大小依此插入該有序序列,每插入乙個元素後依然保持該序列有序,...

排序演算法一

3個簡單的排序演算法,不多解釋了,直接上 include include void display int a,int n printf n void exchange int a,int i,int j 氣泡排序 void popsort int a,int n end for j printf ...

排序演算法(一)

氣泡排序 基本思想 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉 較小的往上冒。即 每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。氣泡排序的示例 演算法實現 void print int arr,int size...