/* 選擇排序*/
#include
#include
#include
"sorttesthelper.h"
using
namespace std;
template
<
typename t>
void
selectionsort
(t arr,
int n)
}swap
(arr[i]
,arr[min]);
}}//對正常插入排序演算法的改進,思路一樣 但是減少賦值的次數 傳統方式一次交換就是三次賦值,這裡有一次賦值就行 改進後由於減少了賦值次數 同時還插入排序可以提前終止內層迴圈,所以用的時間小於選擇排序
template
<
typename t>
void
insertionsort
(t arr,
int n)
arr[j]
=e;}
}//氣泡排序o(n方)
template
<
typename t>
void
gudugudu
(t arr,
int n)}}
}//希爾排序
const
int incrgap=3;
template
<
typename t>
void
shellsort
(t arr,
int n)
arr[j]
=insertnum;
} gap=gap/incrgap;}}
intmain()
/* 隨機生成範圍陣列的方法 封裝成為了sorttesthelper.**件 方便引用*/
#include
#include
#include
using
namespace std;
namespace sorttesthelper
//生成近乎有序的隨機數組 先生成全部有序的 然後隨機交換幾個元素的位置
int*
generatenearlyorderedarray
(int n,
int swaptimes)
srand
(time
(null))
;for
(int i=
0;i)return arr;
}//輸出
template
<
typename t>
void
printarray
(t arr,
int n)
//檢驗排序是否正確
template
<
typename t>
bool
issorted
(t arr,
int n)
//效率時間判斷
template
<
typename t>
void
testsort
(string sortname,
void
(*sort)
(t,int
),t arr,
int n)
//拷貝乙個陣列
int*
copyintarray
(int a,
int n)
}
冒泡 選擇 插入 希爾排序
include include include using namespace std template void print const t a,int n 氣泡排序 每次迴圈總是將最大元素移到隊尾 o n 2 穩定的排序演算法 templatevoid bubblesort t a,int n ...
陣列排序(冒泡,選擇,插入,希爾)
package org.owen public class sortall system.out.println 氣泡排序的結果 maopao i system.out.println system.out.println 選擇排序的結果 xuanze i system.out.println sy...
C 選擇冒泡插入希爾排序
插入排序思路與打撲克牌的思路類似,從第二項開始,比較所得的與現有序列元素的大小,插入應有的有序序列。實現時需要將比插入值大的值都往後移位,後插入,保證元素不會被覆蓋消失。插入排序的時間複雜度為o n n 且排序演算法穩定。void insertionsort int a,int n a j 1 v ...