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...