選擇 插入 冒泡 希爾

2021-10-07 04:19:19 字數 1821 閱讀 3798

/* 選擇排序*/

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