您好,登錄后才能下訂單哦!
using namespace std; template <typename T> //模版函數(泛型) /* 選擇排序 **/ void selectionSort ( T arr[] , int n ){ // 10, 39, 8, 7, 6, 5, 4, 3, 2, 1 //先取出最小的值 然后交換 for ( int i = 0 ; i < n ; i ++ ){ int minIndex = i; for ( int j = i + 1 ; j < n ; j ++ ){ if( arr[j] < arr[minIndex]){ minIndex = j; } } swap( arr[i] , arr[minIndex] ); //交換函數 } } /* 插入排序 **/ template <typename T> //模版函數(泛型) void insertSort (T arr[] , int n ){ // 10, 39, 8, 7, 6, 5, 4, 3, 2, 1 //取出第二個值,和第一個值交換, //取出第三個值,和第二個值交換,和第一個值交換 for ( int i = 1 ; i < n ; i ++ ){ for( int j = i ; j > 0 ; j -- ){ if( arr[j] < arr[j-1]){ swap( arr[j] , arr[j-1] ); }else{ break; } } } } /* 優化插入排序 **/ template <typename T> //模版函數(泛型) void insertOptimizeSort (T arr[] , int n ){ // 10, 39, 8, 7, 6, 5, 4, 3, 2, 1 //取出第二個值,拷貝一份,然后和第一個值比較,如果大把第一個值移 //取出第三個值,拷貝一份,然后和第二個值比較,如果大把第二個值移,然后和第一個值比較 for ( int i = 1 ; i < n ; i ++ ){ T e = arr[i]; int j; for(j = i ; j > 0 ; j -- ){ if( arr[j-1] >e){ arr[j] = arr[j-1]; }else{ break; } } arr[j] = e; } } /* 冒泡排序 **/ template <typename T> //模版函數(泛型) void bubblingSor(T arr[] , int n){ //取出第一個數和第二個數比較,如果第一個數大進行交換,一直比較到把最大的數字放到末端 //重新第一步的比較,這樣循環比較 //第一個循環把最大的數字放到末端,二次循環把比最大的數小的第二位放到倒數第二位 依次 for( int i = 0 ; i < n ; i ++ ){ for( int j = 0 ; j < n ; j ++){ if(arr[i] < arr[j]){ swap(arr[i], arr[j]); } } } } /* 優化冒泡排序 **/ template <typename T> //模版函數(泛型) void bubblingOptimizeSor(T arr[] , int n){ bool swappedn; do { swappedn = false; for( int i = 1; i < n ; i ++ ){ if( arr[i-1] > arr[i] ){ swap(arr[i-1], arr[i]); swappedn = true; } } n --; } while (swappedn); }
周末看了會視頻,發現講的很好,所以就記在博客上,基本也都理解,算法我認為是一種解題的思路,之前學習高數的時候,都是聯想到世紀情況去解決,基本學起來不是特別困難,好幾年沒有練習,基本忘記過了,復習一下,基本還可以回來,所以看完一篇文章或者認為好的東西都要做筆記,這樣總有一天自己的技能樹會越來越廣,一個很簡單的例子,問你簡單的東西實現,1天也可以繼續實現,1周也可以,我個人認為是一周,這一周需要仔細認真想一想最優的方案,最優的方案個人認為,是場景和自己能力價值最大的體現。自己的能力價值是需要一個思考,這個周期在5天,是最美的,基本都這樣
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。