日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lintcode--1(463)--整数排序

發布時間:2023/12/2 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lintcode--1(463)--整数排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:給一組整數,按照升序排序,使用選擇排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法

1、冒泡排序

? ? ?原理:從第一個整數開始第一趟,比較相鄰的兩個元素,大的放在后面;一輪結束后,最大的數沉底;重復這一過程,完整n-1趟。
? ? ?所以有兩個循環,外循環決定第幾趟、從第幾個元素開始比較;內循環是比較相鄰兩個元素大小,決定要不要交換。 class Solution { public:/** @param A: an integer array* @return: */void sortIntegers(vector<int> &A){int temp = 0;if(A.size()!=0)//判斷是否為空數組{for(int i=0; i<A.size()-1; i++)//外循環只比較A.size()-1趟for(int j=i+1; j<A.size(); j++)//內循環從i+1開始{if(A[i] > A[j]){temp = A[j];//交換A[j] = A[i];A[i] = temp;}}}} };

2、插入排序

? ? ?原理:第一趟把第一個元素當做有序序列,用第二個和第一個比,將大的放在后面;第二趟把前兩個元素當做有序序列,用第三個元素跟第二個比,大的放后面,再用第二個跟第一個比,大的放后面;第三趟把前三個當做有序序列,用第四個元素跟第三個比,再用第三個跟第二個比,第二個跟第一個比;......以此類推。兩個循環,外循環決定從無序序列開始,內循環進行從后往前的兩兩比較和交換。 class Solution { public:/*** @param A an integer array* @return void*/void sortIntegers(vector<int>& A) {int temp = 0;for (int i = 1; i < A.size(); ++i) //從第二個元素開始{while (i > 0 && A[i] < A[i - 1])//當該元素前面還有元素,且比前面的數小,就進行下面的交換{temp = A[i];A[i] = A[i-1];A[i-1] = temp;--i;//遞減,往前比較}}} };

3、選擇排序

? ? ? 原理:遍歷整個數組,對于當前位置i,定義一個變量min_idx,用來記錄當前位置往后的最小的坐標,并通過遍歷以后所有的數字來找這個最小的坐標;然后交換A[i]和A[min_idx]。
? ? ? 外循環定義當前位置,內循環找到當前往后最小的元素坐標。從第一個元素開始,選擇后面元素里面最小的一個和第一個元素交換,直到最后一個元素。

class Solution { public:/*** @param A an integer array* @return void*/void sortIntegers(vector<int>& A) { for (int i = 0; i < A.size(); ++i) {int min_idx = i;for (int j = i + 1; j < A.size(); ++j) {if (A[j] < A[min_idx]) {min_idx = j;}}swap(A[i], A[min_idx]);}} }; 參考: lintcode整數排序


? ? 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Lintcode--1(463)--整数排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。