多種c 排序演算法

2021-10-09 10:59:21 字數 1937 閱讀 5423

1.插入排序的優化

2.步長:一開始設定為 元素個數/2

3.步長次排序:每次排序完,步長減一

每次排序都以步長為間隔給所有元素分組,組內作插入排序。

function.cpp中包括了氣泡排序,插入排序,選擇排序,shell排序

#include "function.h"

void sawp(int &a,int &b)

/*氣泡排序*/

void sort(int a, unsigned int num)}}

return;

}/*選擇排序*/

void sort_2(int a, unsigned int num)

else

break;

}return;

}/*插入排序2*/

void sort_4(int a, unsigned int num)

a[j + 1] = temp;

}}/*shell排序:是插入排序的優化*/

void shell_sort(int a, unsigned int num)

a[j+step] = temp;

}step = step / 2;

}}

function.h

#ifndef function_h

#define function_h

void sawp(int &a, int &b);

void sort(int a, unsigned int num);

void sort_2(int a, unsigned int num);

void sort_3(int a, unsigned int num);

void sort_4(int a, unsigned int num);

void shell_sort(int a, unsigned int num);

#endif

sort.cpp測試程式(隨機生成10個數,測試各種排序演算法)

#include #include #include #include "stdlib.h"

#include #include "function.h"

using namespace std;

#define number 10

int main()

// sort(aim, number);

// sort_2(aim, number);

// sort_3(aim, number);

sort_4(aim,number);

cout << "start" << endl;

for (size_t i = 0; i < number; i++)

}

基數排序:空間複雜度高,時間複雜度最低,但是使用有限制,陣列的值不能為負數,小數,排序數字不能重複,而且要事先知道資料的最大值。

/*基數排序,空間複雜度高,時間複雜度最低*/

void radix_sort(int a, unsigned int length, int max)

int p = 0;

//把temp陣列賦值給a陣列

for (int i = 0; i < num; i++)

}for(int i = 0; i < num; i++)

printf("\n");

} }

int main()

; for(int i=0; i<10; i++)

printf("\n");

bucket_sort(aim2, number);

cout << "start" << endl;

for (size_t i = 0; i < number; i++)

}

java 多種排序演算法

1 時間頻度 乙個演算法中的語句執行次數叫做語句頻度或時間頻度,用t n 表示。理論上無法計算乙個演算法執行所需的時間,必須上機測試才能知道,但是我們不可能也沒必要對每個演算法都進行上機測試,我們只需要知道哪個演算法執行時間長,哪個演算法執行時間短即可。演算法花費的時間和演算法中語句執行次數成正比,...

多種排序組合

include void bubble int a,int n 氣泡排序 void choise int a,int n 選擇排序 void quick int a,int i,int j 快速排序 void insert int a,int n 插入法 void shell int a,int n...

多種語言實現氣泡排序演算法

相鄰元素兩兩比較,大的往後放,第一次完畢,最大值出現在了最大索引處 public static void bubblesort int arr for int i 0 i arr.length 1 i void bubble sort int a,int n void bubble sort int...