国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

排序算法——冒泡排序詳解及優(yōu)化

這篇具有很好參考價值的文章主要介紹了排序算法——冒泡排序詳解及優(yōu)化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

排序的穩(wěn)定性

對于一個排序算法,假設兩個相同的元素Ai和Aj·
在排序前這兩個元素滿足條件i<j,即Ai在Aj之前·
在排序后Ai仍在Aj之前,則稱為排序算法為穩(wěn)定排序·
否則稱這個算法為不穩(wěn)定排序

穩(wěn)定性的說明
排序的穩(wěn)定性并不影響排序算法的效率,穩(wěn)定性只對類/結構體類型數據有影響

冒泡排序

這里全部以從小到大(升序)為例講解
冒泡排序介紹
基本思想:每輪不斷將元素進行兩兩比較,并按“前小后大"規(guī)則交換實現思路:
比較相鄰元素,若前者大于后者,兩元素進行交換
對每組相鄰元素,實現上述步驟,在第一輪結束后,最后一個元素即為最大值重復上述步驟,每次比較次數減1,直到無需比較,排序結束

排序算法——冒泡排序詳解及優(yōu)化

排序算法——冒泡排序詳解及優(yōu)化

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

void bubbleSort(int arr[], int len)
{
	//外層循環(huán) len-1次
	for (int i = 0; i < len - 1; i++)
	{
		//內層循環(huán)len-i-1
		for (int j = 0; j < len - i - 1; j++)
		{
			//相鄰元素,前者大于后者,進行交換
			if (arr[j]>arr[j+1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

//打印數組
void printArray(int arr[], int len)
{
	for (int i = 0; i < len; i++)
	{
		cout << arr[i] << "";
	}
	cout << endl;
}

void test01()
{
	int arr[8] = { 2,5,4,5,7,1,3,6 };

	//數組中的元素個數
	int len = sizeof(arr) / sizeof(int);

	//調用冒泡排序
	bubbleSort(arr, len);

	//打印數組
	printArray(arr, len);
}

int main()
{
	test01();
	system("pause");
	return EXIT_SUCCESS;
}

排序算法——冒泡排序詳解及優(yōu)化

優(yōu)化后的冒泡排序

我們先觀察此冒泡排序的具體的步驟,用下面這段代碼即可實現

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

//打印數組
void printArray(int arr[], int len)
{
	for (int i = 0; i < len; i++)
	{
		cout << arr[i] << "";
	}
	cout << endl;
}

void bubbleSort(int arr[], int len)
{
	//外層循環(huán) len-1次
	for (int i = 0; i < len - 1; i++)
	{
		//內層循環(huán)len-i-1
		for (int j = 0; j < len - i - 1; j++)
		{
			//相鄰元素,前者大于后者,進行交換
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
		//打印數組
		printArray(arr, len);
	}
}

void test01()
{
	int arr[8] = { 2,5,4,5,7,1,3,6 };

	//數組中的元素個數
	int len = sizeof(arr) / sizeof(int);

	//調用冒泡排序
	bubbleSort(arr, len);
}

int main()
{
	test01();
	system("pause");
	return EXIT_SUCCESS;
}

排序算法——冒泡排序詳解及優(yōu)化
排序算法——冒泡排序詳解及優(yōu)化
下面是優(yōu)化后的冒泡排序

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

//打印數組
void printArray(int arr[], int len)
{
	for (int i = 0; i < len; i++)
	{
		cout << arr[i] << "";
	}
	cout << endl;
}


void bubbleSort2(int arr[], int len)
{
	bool flag = true;//true 代表交換過  false代表還沒交換
	//外層循環(huán) len-1次
	for (int i = 0; i < len - 1; i++)
	{
		flag = false;//每輪初始化狀態(tài)為真
		//內層循環(huán)len-i-1
		for (int j = 0; j < len - i - 1; j++)
		{
			//相鄰元素,前者大于后者,進行交換
			if (arr[j]>arr[j+1])
			{
				flag = true;//發(fā)生交換  狀態(tài)改為真
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
		if (flag==false)
		{
			break;
		}
		printArray(arr, len);
	}
}

void test02()
{
	int arr[8] = { 2,5,4,5,7,1,3,6 };

	//數組中的元素個數
	int len = sizeof(arr) / sizeof(int);

	//調用冒泡排序
	bubbleSort2(arr, len);
}

int main()
{
	test02();
	system("pause");
	return EXIT_SUCCESS;
}

排序算法——冒泡排序詳解及優(yōu)化
最終代碼

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

//打印數組
void printArray(int arr[], int len)
{
	for (int i = 0; i < len; i++)
	{
		cout << arr[i] << "";
	}
	cout << endl;
}


void bubbleSort2(int arr[], int len)
{
	bool flag = true;//true 代表交換過  false代表還沒交換
	//外層循環(huán) len-1次
	for (int i = 0; i < len - 1 && flag==true; i++)
	{
		flag = false;//每輪初始化狀態(tài)為真
		//內層循環(huán)len-i-1
		for (int j = 0; j < len - i - 1; j++)
		{
			//相鄰元素,前者大于后者,進行交換
			if (arr[j]>arr[j+1])
			{
				flag = true;//發(fā)生交換  狀態(tài)改為真
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

void test02()
{
	int arr[8] = { 2,5,4,5,7,1,3,6 };

	//數組中的元素個數
	int len = sizeof(arr) / sizeof(int);

	//調用冒泡排序
	bubbleSort2(arr, len);

	//打印
	printArray(arr, len);

}

int main()
{
	test02();
	system("pause");
	return EXIT_SUCCESS;
}

排序算法——冒泡排序詳解及優(yōu)化

冒泡排序的復雜度

排序算法——冒泡排序詳解及優(yōu)化文章來源地址http://www.zghlxwxcb.cn/news/detail-456627.html

到了這里,關于排序算法——冒泡排序詳解及優(yōu)化的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【排序算法略解】(十種排序的穩(wěn)定性,時間復雜度以及實現思想)(含代碼)(完工于2023.8.3)

    注:以下排序默認為升序排序。 穩(wěn)定性:指的是排序的過程中是否會改變多個相同的值的相對次序,如果會改變則是不穩(wěn)定的。 冒泡排序,選擇排序,插入排序是最簡單的排序方法。 排序方法:掃描的過程中,比較相鄰兩個數的大小關系,如果存在逆序就交換這兩個數,這

    2024年02月13日
    瀏覽(22)
  • 百度出品,Nature重磅 -- 優(yōu)化的mRNA設計算法可改善mRNA的穩(wěn)定性和免疫原性

    百度出品,Nature重磅 -- 優(yōu)化的mRNA設計算法可改善mRNA的穩(wěn)定性和免疫原性

    摘要 盡管mRNA疫苗已用于COVID-19的預防,但仍然面臨不穩(wěn)定和易降解的風險,這是mRNA疫苗存儲、配送、效價等面臨的重要障礙。先前的研究已表明, 增加二級結構可延長mRNA的半衰期 ,再加上 選擇優(yōu)化的密碼子,可改善蛋白表 達。因此,原則上mRNA的設計算法必須優(yōu)化二級結

    2024年02月08日
    瀏覽(24)
  • 基于遺傳算法優(yōu)化BP神經網絡的滑坡穩(wěn)定性預測,BP神經網絡的詳細原理

    目錄 BP神經網絡的原理 BP神經網絡的定義 BP神經網絡的基本結構 BP神經網絡的神經元 BP神經網絡的激活函數, BP神經網絡的傳遞函數 遺傳算法原理 遺傳算法主要參數 遺傳算法流程圖 完整代碼包含數據下載鏈接: 遺傳算法優(yōu)化BP神經網絡的MATALB代碼,遺傳算法優(yōu)化BP神經網絡

    2024年02月05日
    瀏覽(93)
  • 【八大排序(十)】八大排序效率與穩(wěn)定性分析

    【八大排序(十)】八大排序效率與穩(wěn)定性分析

    ??博主CSDN主頁:杭電碼農-NEO?? ? ?專欄分類:八大排序專欄? ? ??代碼倉庫:NEO的學習日記?? ? ??關注我??帶你學習排序知識 ? ???? 比較八大排序不能直接將 這八個排序放在一起討論 我們根據大致效率將它們分為兩組: (每個排序的詳情鏈接在后面) 1. 第一組 插入排

    2024年02月11日
    瀏覽(30)
  • 百度SEO優(yōu)化不穩(wěn)定的原因分析(提升網站排名的穩(wěn)定性)

    百度SEO優(yōu)化不穩(wěn)定的原因分析(提升網站排名的穩(wěn)定性)

    百度SEO優(yōu)化不穩(wěn)定介紹蘑菇號-www.mooogu.cn SEO不穩(wěn)定是指網站在搜索引擎中的排名不穩(wěn)定,隨著時間的推移會發(fā)生變化。這種情況可能會出現在網站頁面結構、內容質量、外鏈質量等方面存在缺陷或不合理之處。因此,優(yōu)化SEO非常重要,可以提高網站的穩(wěn)定性和排名。掌上幫教

    2024年02月07日
    瀏覽(111)
  • 數據結構--堆的實現-大根堆/小根堆/堆排序/堆排序穩(wěn)定性證明/TOP-K

    數據結構--堆的實現-大根堆/小根堆/堆排序/堆排序穩(wěn)定性證明/TOP-K

    ? ? ? ? 前言? ? ? ? ? 逆水行舟,不進則退!??!? ? ? ? ? ? ? ? 目錄 ? ?? ? 認識堆 ? ?? ? 堆的創(chuàng)建 ? ? ? ? 1,向下調整的方法建立堆 ? ? ? ? 2,以向下調整的方式建立小根堆 ? ? ? ? 3,向上調整的方式建堆 ? ?? ? 堆的插入 ? ?? ? 堆的刪除? ? ? ? ? ?? ?

    2024年02月04日
    瀏覽(23)
  • 數學建模之穩(wěn)定性模型詳解

    數學建模之穩(wěn)定性模型詳解

    碼字總結不易,老鐵們來個三連: 點贊、關注、評論 作者:[左手の明天] ? 原創(chuàng)不易,轉載請聯系作者并注明出處 版權聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。 對象仍是動態(tài)過程,而建模目的是研究時間充分長以后過程的

    2024年02月05日
    瀏覽(15)
  • Linux TCP隊列的實例詳解,提高網絡性能和穩(wěn)定性!

    Linux TCP隊列的實例詳解,提高網絡性能和穩(wěn)定性!

    ?? 個人網站:ipengtao.com TCP 隊列是 Linux 操作系統(tǒng)中關鍵的網絡管理組件,它們有助于控制和優(yōu)化網絡連接的性能。在這篇文章中,將深入研究 Linux TCP 隊列的工作原理、配置選項以及提供豐富的示例代碼,以幫助大家更好地理解和管理 TCP 隊列。 在理解 TCP 隊列之前,需要了

    2024年01月18日
    瀏覽(28)
  • 【博客683】k8s list請求優(yōu)化以及合理使用list以維護集群穩(wěn)定性

    1、LIST apis/cilium.io/v2/ciliumendpoints?limit=500resourceVersion = 0 這里同時傳了兩個參數,但 resourceVersion=0 會導致 apiserver 忽略 limit=500, 所以客戶端拿到的是全量 ciliumendpoints 數據 此時不會查etcd,因為有resourceVersion = 0,且resourceVersion = 0會忽略limit,因為limit一定要查etcd 一種資源的全

    2024年02月15日
    瀏覽(16)
  • 時間復雜度、空間復雜度、算法的穩(wěn)定性說明以及示例

    時間復雜度、空間復雜度、算法的穩(wěn)定性說明以及示例

    目錄 時間復雜度 空間復雜度 算法的穩(wěn)定性 總結 時間復雜度是評估算法性能的一種方式,主要衡量的是算法在運行時所需要的時間或者操作的次數。在計算機科學中,我們通常用大O表示法來描述時間復雜度。 大O表示法主要關注的是算法在最壞情況下的時間復雜度,它描述

    2024年02月03日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包