黑马程序员——选择排序
生活随笔
收集整理的這篇文章主要介紹了
黑马程序员——选择排序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
排序算法有很多,記得當(dāng)初一開始學(xué)C時就有這種問題。那個時候會用也最易理解的排序算法,就是選擇排序了(當(dāng)時并不知道這樣的算法還有名字)。
思想
還是先來看看選擇排序的思想。選擇排序的思想非常直接,不是要排序么?那好,從所有序列中先找到最小的,然后放到第一個位置。之后再看剩余元素中最小的,放到第二個位置……以此類推,就可以完成整個的排序工作了??梢院芮宄陌l(fā)現(xiàn),選擇排序是固定位置,找元素。
// // main.m // SelectSort // // Created by 張貴廣 on 15/10/13. // Copyright ? 2015年 HZNU. All rights reserved. // // 選擇排序#import <Foundation/Foundation.h>// 選擇排序 void selectSort(int *arr, int length) {int i, j;int temp;int minIdx; // 最小值下標(biāo)for (i=0; i<length-1; i++) {minIdx = i; // 最小值下標(biāo)先初始化為ifor (j=i+1; j<length; j++) {if (arr[minIdx] > arr[j]) { // 如果j下標(biāo)的數(shù)比minIdx下標(biāo)的數(shù)大,改變minIdx的值為jminIdx = j;}}// 把minIdx下標(biāo)的值與i下標(biāo)的值交換temp = arr[i];arr[i] = arr[minIdx];arr[minIdx] = temp;} }int main(int argc, const char * argv[]) {@autoreleasepool {int i;int arr[] = {4, 2, 5, 1, 6, 9, 0, 7, 8, 3}; // 定義數(shù)組int length = sizeof(arr)/sizeof(arr[0]); // 算出數(shù)組長度// 調(diào)用選擇排序 selectSort(arr, length);// 輸出排序后的數(shù)組for (i=0; i<length; i++) {printf("%i ", arr[i]);}printf("\n");}return 0; }分析
從選擇排序的思想或者是上面的代碼中,我們都不難看出,尋找最小的元素需要一個循環(huán)的過程,而排序又是需要一個循環(huán)的過程。因此顯而易見,這個算法的時間復(fù)雜度也是O(n*n)的。這就意味值在n比較小的情況下,算法可以保證一定的速度,當(dāng)n足夠大時,算法的效率會降低。并且隨著n的增大,算法的時間增長很快。因此使用時需要特別注意。
轉(zhuǎn)載于:https://www.cnblogs.com/zhangguiguang/p/4874955.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的黑马程序员——选择排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Android] Android统
- 下一篇: html---textarea初始化时就