1選擇排序:從陣列中每次挑選乙個最小值,與放在設定好的位置,時間複雜度上下界都是n^2
**實現: ps.沒有給出main函式,只給出了排序函式的演算法
void
paixv
(int arr,
int n)
}int tmp = arr[i]
; arr[i]
= arr[min]
; arr[min]
= tmp;
}//輸出函式
for(i =
0; i < n; i++)}
}
選擇排序耗時(pta 排序題oj
2氣泡排序:對陣列中相鄰的兩元素進行比較,如果左大於右則交換位置.時間複雜度下界n,上界n^2
void
paixv
(int arr,
int n)
}//當以上的if判斷一次都沒被呼叫過,證明序列已經有序,可以直接跳出迴圈
if(flag ==0)
}for
(i =
0; i < n; i++)}
}
氣泡排序耗時:
3插入排序:從待排序列中抽乙個數放到有序序列中,通過每次比較大小從而插入數生成乙個新的有序序列.時間複雜度下界n,上界n^2
對於基本有序的序列來說插排的速度比較快
void
paixv
(int arr,
int n)
arr[j]
= temp;
}for
(i =
0; i < n; i++)}
}
插排耗時:(其中倒數第二項是相對有序的序列,可以看到耗時比上面的短很多
以上三種僅以交換相鄰兩元素的排序演算法有插排和冒泡,平均時間複雜度下界都是n^2,主要優點是簡單,但是當資料量大並且相對無序的時候,排序的時間往往很久.
最壞情況下,選擇排序的耗時比氣泡排序的要短,因為冒泡每一次比較為真後需要相鄰兩數交換,選擇排序每次查詢只會找到最小的數,然後放入預先設定好
的位置中.而插入排序對於基本有序的資料而言非常的快,
簡單排序 選擇 插入 氣泡排序
3種順序排序方法。簡單排序是指時間複雜度為o n 2 的排序方法。1 選擇排序 將某個特定值有序的放置在最終位置上 外層迴圈控制最終位置的序號,內層迴圈從外層迴圈序號處向後遍歷,找到最小值。2 插入排序 插入排序將某個特定值插入到值列的某個子集中,並重複該過程 外層迴圈控制要插入的資料 從第二個數到...
簡單排序之選擇排序
口訣 兩兩相比 每輪取最小數交換 外層n 1 內層 i 1 n 優化 相比氣泡排序,雖然比較次數沒變,但是交換次數減少了。package sort 選擇排序 public class selection system.out.println 未排序前 for int i 0 i array.leng...
簡單排序 氣泡排序,插入排序,選擇排序
簡單排序 氣泡排序,插入排序,選擇排序 這些演算法思想是比較簡單的,執行速度也相對慢一些,不過,在某些情況下比那些複雜演算法實際上還要好一些,比如,對於小規模的檔案以及基本有序的檔案,插入演算法能比快速排序演算法更為有效。如何排序 1 比較兩個資料項 2 交換兩個資料想,或者複製其中的一項 氣泡排序...