氣泡排序
/** bubblesort.h
* 氣泡排序
* created on: 2023年2月10日
* author: luyonglei */
#ifndef src_bubblesort_h_
#define src_bubblesort_h_#include
using
namespace
std;
#if 0template
void bubblesort(vector&arr)
}//若已經有序,則提前退出排序
if(sorted)
break
; }
}#else
template
void bubblesort(vector&arr)
}//記錄最後一次交換位置,減少比較次數
end =sortedindex;
}}#endif
#endif /* src_bubblesort_h_ */
選擇排序
/** selectionsort.h
* 選擇排序(選擇排序交換次數遠遠小於氣泡排序,所以平均效能比氣泡排序要好)
* created on: 2023年2月10日
* author: luyonglei */
#ifndef src_selectionsort_h_
#define src_selectionsort_h_#include
using
namespace
std;
#if 1template
void selectionsort(vector&arr)
swap(arr[maxindex], arr[end]);
//選擇最大的元素,與末尾元素交換位置}}
#else
//利用堆來選擇最值,配合排序演算法可以降低演算法複雜度,所以衍生出了堆排序
#endif
#endif /* src_selectionsort_h_ */
插入排序
/** insertionsort.h
* 插入排序
* created on: 2023年2月11日
* author: luyonglei */
#ifndef src_insertionsort_h_
#define src_insertionsort_h_#include
#include
"binarysearch.h
"using
namespace
std;
#if 0template
void insertionsort(vector&arr)
}}#elif 0
//優化,將交換改為挪動
templatevoid insertionsort(vector&arr)
arr[end] =value;
}}#else
//對已排序部分進行二分搜尋優化(在挪動的基礎上再優化比較次數)
templatevoid insertionsort(vector&arr)
arr[index] =value;
}}#endif
#endif /* src_insertionsort_h_ */
插入排序優化中使用到的二分搜尋
/** binarysearch.h
* 二分查詢
* 陣列取值範圍盡量保證左閉右開,這樣end-begin=size,編碼比較方便
* created on: 2023年2月11日
* author: luyonglei */
#ifndef src_binarysearch_h_
#define src_binarysearch_h_#include
using
namespace
std;
#define element_not_find -1
//查詢value在有序陣列arr中的位置
templateint indexof(const vector&arr, int
size, t value)
else
if (value >arr[middle])
else
}return
element_not_find;}//
查詢value在有序陣列arr中待插入的位置
//有序陣列中第乙個大於value的位置
templateint indexofinsertion(const vector&arr, int
size, t value)
else
}//此時begin==end
return
begin;
}#endif /* src_binarysearch_h_ */
《演算法》選擇排序 插入排序 氣泡排序
選擇排序,演算法 p156 package algorithm public class selection p156 for int i 0 i n i public static void main string args test.sort a 思路 將第乙個元素與剩餘所有元素相比,如果有比第...
排序演算法 氣泡排序 選擇排序 插入排序
氣泡排序演算法 氣泡排序是最簡單的排序演算法之一。此演算法具有二次方程增長階,因此僅適合排序小列表。氣泡排序演算法是階o n 2 的演算法 package com.szy.structure.sort public class bubblesort system.out.println 排序前 fo...
排序演算法 氣泡排序 插入排序 選擇排序
2 穩定性 2.氣泡排序 3.插入排序 4.選擇排序 5.總結 對於演算法,我們首先考慮的就是其時間複雜度和空間複雜度。1 時間複雜度 另外,由於序列順序不一定,不同情況下的時間複雜度也不同,所以我們還要考慮最好情況和最壞情況。2 空間複雜度 這裡引入了乙個新的概念,我們把o 1 的空間複雜度的排序...