這是最基本的三種排序演算法,比它效率高的還有歸併排序,堆排序,快速排序等演算法,作為乙個it民工應該好好掌握。
氣泡排序,選擇排序和插入排序都有兩層迴圈,時間複雜度均為o(n^2),下面逐一介紹:
氣泡排序:
1.外層迴圈,控制冒泡次數,起始從loop=1開始,結束標識是loop2.內層迴圈,選出對應輪的最大數,即第k輪冒泡選出的是第n-k-1大的數,故迴圈從loop=0開始,結束標誌loop選擇排序:
1.外層迴圈,控制比較次數,第i輪設定min_index=i為最小值,結束標誌loop2.記憶體迴圈,迴圈找到本輪最小值的小標loop_min_index並判斷是否交換,迴圈結束標誌為loop插入排序:
1.外層迴圈,控制插入的元素。
2.內層迴圈,控制插入的位置。
下面是自己實現的三種種演算法最簡單的**,沒有做很多測試,有錯還請指正:
void bubblesort(int *a, intlength)
for(int i=1; ii)}}
}void selectionsort(int *a, int
length)
for(int i=0; i1; ++i)
}if(min_index !=i)
}}void insertsort(int *a, int
length)
for(int i=1; ii)
a[j+1] = temp;
}}
Java排序演算法之氣泡排序 插入排序 選擇排序
一 前言 排序是日常中最常見的一種演算法,常見的演算法有 氣泡排序 插入排序 選擇排序 歸併排序 快速排序 計數排序 快速排序 基數排序 桶排序。那麼該怎樣分析和學習排序演算法呢?二 演算法的分析課 在上述的八種排序方法中,根據時間複雜度和是否基於比較可以為三種 排序演算法 時間複雜度 是否基於比較...
演算法 選擇 插入 氣泡排序
選擇排序,就是每次選擇未排序中最小的,放到第i個位置。比如第一次,遍歷整個陣列,找到陣列中最小的,放到第乙個位置 第二次從第2個元素開始遍歷,找到最小的,放到第2個位置 以此類推,流程如下。輸出結果 012 3568 9插入排序,第一次迴圈,當做0 0號位置已經排好序,需要做的是從0 1號位置排序,...
排序演算法 冒泡 選擇 插入排序
本文簡單總結一下三大排序演算法,如有不足,請多多提意見。簡述 從小到大排序,每次比較兩個元素,看他們的順序有沒有錯,如果錯了就換過來。a 比較abc.元素,如果第乙個比第二個大,則將兩個元素交換位置 bac.再依次將a和c進行比較。b 對每一對相鄰的元素做同樣的工作,從第一對到最後一對。這一次執行完...