2020-09-15 手寫基本演算法
基本演算法
氣泡排序:
兩兩相比,大小決定左右位置。
public int[] BubbleSort(int[] arr)
{
/* 生成隨機陣列進行測試
int a = 0;
Random r = new Random();
List<int> list = new List<int>();
for (int b = 0; b < 4;b++ )
{
a = r.Next(100);
list.Add(a);
}
arr = list.ToArray();
*/
int tmp = 0;
for (int outer = 0; outer < arr.Length; outer++)
{
for (int inner = 0; inner < arr.Length-1; inner++)
{
if (arr[inner] > arr[inner + 1]) {
tmp = arr[inner];
arr[inner] = arr[inner + 1];
arr[inner + 1] = tmp;
}
}
}
return arr;
}
選擇排序
宣告最值下標,初始值為每次迴圈的第一個數
迴圈找出最值:迴圈與當前最值進行比較,大/小於最值時,覆蓋下標,當最值不為初始值時,交換位置。
public int[] SelectionSort(int[] arr)
{
for (int outer = 0; outer < arr.Length-1; outer++)
{
int minIndex = outer;
int tmp = 0;
for (int inner = outer + 1; inner < arr.Length; inner++)
{
if (arr[inner] < arr[minIndex])
{
minIndex = inner;
}
}
if (minIndex != outer)
{
tmp = arr[outer];
arr[outer] = arr[minIndex];
arr[minIndex] = tmp;
}
}
return arr;
}
插入排序
將除首位的元素先存入tmp中,迴圈與前面的數進行比較
public int[] InsertSort(int[] arr)
{
int tmp = 0;
for (int i = 1; i < arr.Length;i++ )
{
for (int j = 1; j < arr.Length; j++)
{
tmp = arr[j];
if (arr[j] < arr[j - 1])
{
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
return arr;
}
相關文章
- 手寫 Hibernate ORM 框架 05-基本效果測試ORM框架
- 手寫fft演算法,和內建fft演算法對比FFT演算法
- 手寫演算法並記住它:桶排序演算法排序
- 手寫演算法-python程式碼實現Kmeans演算法Python
- 從零手寫實現 tomcat-03-基本的 socket 實現Tomcat
- 手寫演算法並記住它:歸併排序演算法排序
- 手寫演算法並記住它:插入排序演算法排序
- 手寫演算法並記住它:計數排序演算法排序
- 手寫演算法並記住它:選擇排序演算法排序
- 基本排序演算法排序演算法
- 手寫一個HTTP框架:兩個類實現基本的IoC功能HTTP框架
- 資料探勘——KNN演算法(手寫數字分類)KNN演算法
- 演算法基本概念演算法
- vue基本指令與腳手架基本配置Vue
- 面試題目:手寫一個LRU演算法實現面試題演算法
- KNN 演算法-實戰篇-如何識別手寫數字KNN演算法
- 陣列的基本演算法陣列演算法
- 演算法的基本概念演算法
- 演算法分析基本概念演算法
- 手寫現代前端框架diff演算法-前端面試進階前端框架演算法面試
- 手寫演算法並記住它:快速排序(最易理解版)演算法排序
- 百度面試兩板斧:手寫演算法問基礎面試演算法
- 手寫PromisePromise
- 手寫CountDownLatchCountDownLatch
- 手寫MVVMMVVM
- 手寫bind
- 手寫 PromisePromise
- 手寫axiosiOS
- 手寫 SpringSpring
- 手寫bootstorpboot
- 手寫new
- 手寫ajax
- PHP 編寫基本的 Socket 程式PHP
- 遺傳演算法的基本框架演算法框架
- 基本資料結構演算法資料結構演算法
- android 利用path 實現手寫板的手寫效果Android
- JUnit5編寫基本測試
- orcale 語句基本語法縮寫