氣泡排序
氣泡排序可以說是所有排序中最簡單的排序,它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。
/**
* 冒泡法排序
* 需要排序的整型陣列
*/public
static
void
bubblesort01
(int
numbers)}}
}
插入排序
插入排序是由n-1趟排序組成,對於p=1到n-1趟,插入排序保證從0到p的元素都已排序狀態。如圖:
* 插入排序
** @param a
* @param */
public
static
comparable
<
?super anytype>>
void
insertionsort
(anytype[
] a)
}for
(anytype i : a)
}選擇排序
選擇排序就是在未排序序列中找到最小元素,存放到排序序列的起始位置,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列起始位置。以此類推,直到所有元素均排序完畢。
/**
* 選擇排序
*
* @param numbers
*/public
static
void
selectsort
(int
numbers)
}
temp = numbers[i]
;
numbers[i]
= numbers[k]
;
numbers[k]
= temp;
}}
希爾排序
1、將包含n個元素的陣列,分成n/2個陣列序列,第乙個資料和第n/2+1個資料為一對…
2、對每對資料進行比較和交換,排好順序;
3、然後分成n/4個陣列序列,再次排序;
4、不斷重複以上過程,隨著序列減少並直至為1,排序完成。
/**
* 希爾排序
** @param a
* @param */
public
static
comparable
<
?super anytype>>
void
shellsort
(anytype[
] a)}}
for(anytype i : a)
}
快速排序
快速排序是數列中挑出乙個元素,稱為「基準」,重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割之後,該基準是它的最後位置。這個稱為分割(partition)操作。遞迴地把小於基準值元素的子數列和大於基準值元素的子數列排序。
public
static
void
quicksort
(int
numbers,
int start,
int end)
}while
(i <= j);if
(start < j)
quicksort
(numbers, start, j);if
(end > i)
quicksort
(numbers, i, end);}
}
歸併排序
歸併排序簡單的可理解為先將陣列進行拆分出a,b將等分陣列並將其進行初始排序,然後a,b進行比較,將數字小的值放入新陣列c中,並將比較後大的值繼續與其另一陣列中的值進行比較,以此類推,如圖所示:
**如下:
/**
* 歸併排序
* @param a
* @param */
public
static
comparable
<
?super anytype>>
void
mergesort
(anytype[
] a)
}private
static
comparable
<
?super anytype>>
void
mergesort
(anytype[
] a, anytype[
] tmparray,
int left,
int right)
}private
static
comparable
<
?super anytype>>
void
merge
(anytype[
] a, anytype[
] tmparray,
int leftpos,
int rightpos,
int rightend)
else
}while
(leftpos <= leftend)
while
(rightpos <= rightend)
for(
int i =
0; i < numelements; i++
, rightend--
)}
常見排序演算法總結(java版)
總結幾種常用到的排序演算法,如下 1.選擇排序 2.插入排序 3.氣泡排序 4.歸併排序 5.快速排序 6.堆排序 為方便起見,規定陣列為整形陣列,並要按遞增排序,並定義幾個方法 private static void exch int a,int i,int j 1.選擇排序 選擇排序的思想就是 ...
常見的排序演算法總結(JAVA實現)
插入排序 直接插入排序 希爾排序。選擇排序 直接選擇排序 堆排序。交換排序 氣泡排序 快速排序。歸併排序。基數排序。思路 對於一組資料,先將第乙個和第二個數排序,再將第三個數插入之前已經有序序列中形成新的有序序列,以此類推。也就是對於第n個數的排序,是將這第n個數插入到前n 1個數的有序序列中,從而...
常見排序總結
選擇排序 每一趟選取第i個關鍵字,與剩下的n i關鍵字進行比較,找出最大的值與剛開始選擇的i下標對應的值交換 第一趟 0 1 n 1 第二趟 1,2 n 1 應用場景 最好最壞情況時間複雜度都是o n 2 空間複雜度為o 1 最壞情況 對相對有序的一組資料排序 不穩定 由其交換引起的 適用於數量不大...