遞迴實現氣泡排序
#include<vector>
using namespace std;
void bubble_sort(vector<int>& v, int L, int R)
{
if (L == R)
{
return;
}
for (int i = L; i < R; i++)
{
if (v[i] > v[i + 1])
{
int temp;
temp = v[i + 1];
v[i + 1] = v[i];
v[i] = temp;
}
}
bubble_sort(v, L, R - 1);
}
int main()
{
int n;
cin >> n;
vector<int> nums;
for (int i = 0; i < n; i++)
{
int temp;
cin >> temp;
nums.push_back(temp);
}
bubble_sort(nums, 0, nums.size() - 1);
for (int i = 0; i < nums.size(); i++)
{
cout << nums[i];
}
return 0;
}
相關推薦
遞迴實現氣泡排序
#include<iostream> #include<vector> using namespace std; void bubble_sort(vector<int>& v, int L, int R) {if (L == R
Java 遞迴與非遞迴實現快速排序
快速排序演算法 工作之前一直不懂快速排序演算法,今天看了下快速排序演算法,跟大家分享下,如果有不妥之處還請建議。 快速排序是對氣泡排序的一種改進,由C.R.A.Hoare於1962年提出,它採用了一種分治的策略,通常稱其為分治法(Divide-and-
[java]氣泡排序的常規、改進以及遞迴實現
package sort_book_datastruction; import java.util.Arrays; /** * 氣泡排序; * @author Administrator * */ public class BubbleSort {
【演算法】氣泡排序與選擇排序的遞迴實現
1 氣泡排序 1 氣泡排序: void bubbleSort(int *data,int start,int end) { if (start < end) { int temp = 0; int length = end -
快速排序和歸併排序的非遞迴實現
1.快速排序 # 快速排序 def partition(li, left, right): i = left j = right r = random.randint(i, j) li[i], li[r] = li[r], li[i] tmp = li[i]
快速排序的遞迴實現
/*把陣列arr按照一個支點分成左右兩個部分 左邊比支點小,右邊比支點大,再返回支點pivot*/ int partition(int *arr,int low, int high){ int pivot = arr[low]; //low為陣列的第一個元素的位置,high為陣列
【Java】 歸併排序的非遞迴實現 資料結構與演算法合集 資料結構與演算法合集
歸併排序可以採用遞迴方法(見:歸併排序),但遞迴方法會消耗深度位O(longn)的棧空間,使用歸併排序時,應該儘量使用非遞迴方法。本文實現了java版的非遞迴歸併排序。 更多:資料結構與演算法合集 思路分析 遞迴排序的核心是merge(int[] arr, int start, int mid,
快速排序的非遞迴實現-----c語言
前面我們講解了快速排序的遞迴實現,但若是待排序的數量非常大且雜亂無章,每層迴圈都使用遞迴呼叫,會很容易造成棧溢位,所以我們可以將快速排序設計為非遞迴實現。 遞迴實現快速排序演算法詳解 快速排序是從序列中選擇一個基準值,按照某種方式將該區間分成兩部分,基準
快速排序遞迴實現
分析:快速排序的原理就是遞迴+分治法,分治法是講每次選擇基準,講所有元素按基準左右按大小站隊,它是不穩定的,因為這是partition過程導致的,假設元素a和基準a重複,但是不能保判斷條件<=a時
排序演算法之快速排序的非遞迴實現
在之前的部落格中提到過快速排序的三種實現方式,不過都是通過遞迴來實現,今天我們將會利用棧來實現快速排序。 -----------------------------------Stack.h----------------------------------------
排序演算法6——圖解歸併排序及其遞迴與非遞迴實現
排序演算法1——圖解氣泡排序及其實現(三種方法,基於模板及函式指標) 排序演算法2——圖解簡單選擇排序及其實現 排序演算法3——圖解直接插入排序以及折半(二分)插入排序及其實現 排序演算法4——圖解希爾排序及其實現 排序演算法5——圖解堆排序及其實現 排序演算法6——圖解歸併排序及其遞迴與非
【轉載】快速排序(三種演算法實現和非遞迴實現)
原文地址 python實現: import random a = [4,1,7,6,9,2,2,3,5,7,8,9,3,1,2,3,4,5,8,0,3,5] b = [4,1,7,6,9,2,8,0,3,5] def twoPointerSort(nums,le
C語言實現遞迴的快速排序
C語言實現遞迴的快速排序 目錄 文章目錄 C語言實現遞迴的快速排序 目錄 原理 程式碼 原理 原理這裡就不多闡述了,主要就是使用頭尾兩個指標,對待排序陣列進行操作,遞迴的收斂返
歸併排序(遞迴實現和迭代實現)
//首先是遞迴實現的方式#include<stdio.h> #define MAXSIZE 10 //實現歸併,並把資料都放在list1裡面 void merging(int *lis
歸併排序非遞迴實現Java
遞迴實現的歸併排序,需要O(lgN)的棧空間,而非遞迴實現的歸併排序則不需要 原文地址:http://www.jianshu.com/p/39dd1d9b491d public class Sort { public static void MergeSort
合併排序的非遞迴實現(自底向上設計)
上一篇博文,討論了合併排序的遞迴實現。這篇文章,說說合並排序的非遞迴實現。 思路描述 假設一個數組,共有11個(0到10)元素。 首先,進行“1+1”合併:即第0個和第1個合併,第2個和第3個合併,……,第8個和第9個合併,第10個不用合併; 然後,進行
快速排序(三種演算法實現和非遞迴實現)
快速排序(Quick Sort)是對氣泡排序的一種改進,基本思想是選取一個記錄作為樞軸,經過一趟排序,將整段序列分為兩個部分,其中一部分的值都小於樞軸,另一部分都大於樞軸。然後繼續對這兩部分繼續進行排序,從而使整個序列達到有序。 遞迴實現: void Q
插入排序c遞迴實現和非遞迴實現
1.特點 :在部分有序的情況下,插入排序效率很高,和選擇排序 不一樣的是,排序的效率受輸入序列的影響很大 平均時間複雜度O(n^2) 最好情況下 O(n) 最壞情況下O(^2) 2.程式碼實現 迭代的方式實現 void
歸併排序演算法(遞迴實現)
歸併(Merge)排序法是將兩個(或兩個以上)有序表合併成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然後再把有序子序列合併為整體有序序列。 歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(Divide and Conquer
快速排序非遞迴實現--python
主要思想是:每次把待排序陣列分為兩部分,左邊小於軸右邊大於軸,把分開的陣列的收尾陣列的索引存到輔助棧空間裡,替換遞迴。兩種思路: 思路一:嚴老師資料結構裡面的思路 def partition(num