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

數(shù)組及詳解冒泡排序

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)組及詳解冒泡排序。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


鐵汁們,今天給大家分享一篇數(shù)組及詳解冒泡排序,來(lái)吧,開(kāi)造??

數(shù)組的定義:是一組相同類型元素的集合。

一維數(shù)組的創(chuàng)建和初始化

一維數(shù)組的創(chuàng)建

數(shù)組及詳解冒泡排序

一維數(shù)組在創(chuàng)建時(shí),未給出確定的數(shù)組大小值,則該數(shù)組必須得初始化,數(shù)組的大小根據(jù)初始的內(nèi)容來(lái)確定,eg:int arr[]={1,2,3,4,5,6}。若不初始化,則編譯器會(huì)報(bào)錯(cuò)。

一維數(shù)組的初始化

由于博主在前面給鐵汁分享函數(shù)棧幀的創(chuàng)建與銷毀可知:

局部變量或者定義在函數(shù)體內(nèi)的數(shù)組 是在棧上開(kāi)辟空間,如果不初始化,根據(jù)函數(shù)棧幀的知識(shí)可知,則其值默認(rèn)為隨機(jī)值。

數(shù)組初始化的定義:數(shù)組在創(chuàng)建的同時(shí)給數(shù)組內(nèi)容賦予初始值。eg:char arr[6]=“abcde”;
數(shù)組及詳解冒泡排序

一維數(shù)組的應(yīng)用

訪問(wèn)數(shù)組中的元素,要使用[ ]下標(biāo)引用操作符,操作數(shù)為數(shù)組名、數(shù)組下標(biāo)值。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int sz = sizeof(arr) / sizeof(arr[0]);  //求任意類型元素總個(gè)數(shù),sizeof為操作符
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]); //訪問(wèn)數(shù)組元素,下標(biāo)引用操作符
	}
	return 0;
}

數(shù)組及詳解冒泡排序

數(shù)組是通過(guò)下標(biāo)來(lái)進(jìn)行訪問(wèn)的,下標(biāo)值從0開(kāi)始。

求數(shù)組元素總個(gè)數(shù): int sz = sizeof(arr) / sizeof(arr[0]),sizeof為操作符,操作數(shù)是類型或者變量,計(jì)算的是類型或者變量占內(nèi)存的大小,單位為字節(jié)。

一維數(shù)組在內(nèi)存中的存儲(chǔ)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int sz = sizeof(arr) / sizeof(arr[0]); 
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("arr[%d]=%p\n",i, &arr[i]); 
	}
	return 0;
}

數(shù)組及詳解冒泡排序
由圖可知隨之?dāng)?shù)組下標(biāo)的增長(zhǎng),數(shù)組下標(biāo)也是成一定規(guī)律進(jìn)行增長(zhǎng),相鄰兩個(gè)元素地址相差4個(gè)字節(jié)。
數(shù)組及詳解冒泡排序

二維數(shù)組的創(chuàng)建和初始化

二維數(shù)組的創(chuàng)建

數(shù)組及詳解冒泡排序

二維數(shù)組在創(chuàng)建時(shí),行可以省略,但列不能省略,若要省略行,則二維數(shù)組必須得要初始化,行的值根據(jù)初始化的內(nèi)容來(lái)確定。

二維數(shù)組的初始化

二維數(shù)組初始化的定義:數(shù)組在創(chuàng)建的同時(shí)給數(shù)組內(nèi)容賦予初始值。eg:int arr[4][5]={{1,2},{3,4}};

二維數(shù)組的應(yīng)用

二維數(shù)組與一維數(shù)組相同,也是通過(guò)下標(biāo)來(lái)進(jìn)行訪問(wèn)。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int arr[4][3] = {{0,1,2},{3,4,5},{6,7,8},{9,10,11}};
	int i = 0;
	for (i = 0; i <4; i++)
	{
		int j = 0;
		for (j = 0; j < 3; j++)
		{
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

數(shù)組及詳解冒泡排序

二維數(shù)組在內(nèi)存中的存儲(chǔ)

%p:打印地址,參數(shù)變量要加取地址操作符&。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int arr[4][3] = {{0,1,2},{3,4,5},{6,7,8},{9,10,11}};
	int i = 0;
	for (i = 0; i <4; i++)
	{
		int j = 0;
		for (j = 0; j < 3; j++)
		{
			printf("%p\n",&arr[i][j]);
		}
	}
	return 0;
}

數(shù)組及詳解冒泡排序
由圖可知,隨著下標(biāo)的增長(zhǎng),地址成一定的規(guī)律增長(zhǎng)(相鄰兩元素地址相差4個(gè)字節(jié)),即:二維數(shù)組在內(nèi)存中是連續(xù)存放的。
數(shù)組及詳解冒泡排序

數(shù)組越界問(wèn)題

數(shù)組下標(biāo)是有范圍限制的。

c語(yǔ)言標(biāo)準(zhǔn)規(guī)定,數(shù)組下標(biāo)從0開(kāi)始,若數(shù)組中有n個(gè)元素,則最后一個(gè)元素對(duì)應(yīng)的下標(biāo)值不超過(guò)n-1,即:數(shù)組下標(biāo)值的范圍為0到n-1,若小于0或超過(guò)n-1,就是數(shù)組的越界訪問(wèn)啦~,起始就是超出了數(shù)組的合法空間(本身向內(nèi)存申請(qǐng)空間。

c本身是不做下標(biāo)越界的檢查,編譯器也不一定會(huì)報(bào)錯(cuò),但編譯器不報(bào)錯(cuò),并不說(shuō)明代碼就是正確的,作為一名程序員,我們應(yīng)該要具備在寫代碼時(shí),自己做好數(shù)組越界檢查。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for (i = 0; i <= sz; i++) //此處不能等于sz,造成了數(shù)組越界
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

一維數(shù)組、二維數(shù)組行和列均有越界的可能性。

數(shù)組作為函數(shù)參數(shù)

數(shù)組名的含義及特殊兩個(gè)例子

通常情況下,數(shù)組名是首元素的地址(兩個(gè)例外)
1 sizeof(數(shù)組名):計(jì)算的是整個(gè)數(shù)組的大小,單位是字節(jié),sizeof內(nèi)部單獨(dú)放一個(gè)數(shù)組名,數(shù)組名表示整個(gè)數(shù)組
2.&數(shù)組名:取出的整個(gè)數(shù)組的地址,&數(shù)組名,數(shù)組名表示整個(gè)數(shù)組。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int arr[5] = { 0,1,2,3,4 };
	printf("%p\n", arr);
	printf("%p\n", arr+1);
	printf("\n");
	printf("%p\n", &arr[0]);
	printf("%p\n", &arr[0]+1);
	printf("\n");
	printf("%p\n",&arr);
	printf("%p\n", &arr + 1);
    return 0;
}

數(shù)組及詳解冒泡排序

冒泡排序詳解

適用條件:整形數(shù)組進(jìn)行升序排序(也適用于數(shù)組中含有相同元素在不同位置處的升序排序)。

實(shí)現(xiàn)思想:相鄰兩元素兩兩進(jìn)行比較、采用兩層for循環(huán)(第一層for循環(huán)控制總趟數(shù)、第二層for循環(huán)控制每一趟兩相鄰元素之間要比較的對(duì)數(shù)),每一趟都可以讓某一個(gè)元素到達(dá)其最終所在的位置處。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void Maopao(int arr[10], int sz)
{
	int i = 0;
	for (i = 0; i < sz - 1; i++)//控制要排序的總趟數(shù)
	{
		int flag = 1;//假設(shè)進(jìn)行每一趟排序之前該數(shù)組已經(jīng)有序,無(wú)需依次把每個(gè)元素進(jìn)行比較,效率高
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++) //控制每一趟兩相鄰元素之間要比較的對(duì)數(shù)
		{
			if (arr[j] > arr[j + 1])
			{
				flag = 0;  //說(shuō)明該數(shù)組此時(shí)并未達(dá)到是有序的
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
		if (flag == 1)
		{
			break;  //該數(shù)組為有序數(shù)組,直接跳出循環(huán),無(wú)需進(jìn)行比較,效率提高
		}
	}
}
int main()
{
	int arr[10] = { 10,9,4,7,6,5,2,3,1 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]); //計(jì)算數(shù)組中元素的總大小,切不可放在冒泡函數(shù)實(shí)現(xiàn)中,不然sz值為1(4/4=1)
	Maopao(arr, sz); //數(shù)組作為參數(shù)傳參時(shí),傳的是數(shù)組名,首元素的地址,為4個(gè)字節(jié),arr==int* arr
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]); //打印
	}
	return 0;
}

數(shù)組及詳解冒泡排序

掃雷與多子棋的實(shí)現(xiàn)

鐵子們~此處代碼的實(shí)現(xiàn)博主已經(jīng)在其他篇博客詳細(xì)講解了,請(qǐng)鐵鐵們點(diǎn)擊此鏈接觀看呦掃雷實(shí)現(xiàn)詳解、三子棋及多子棋的實(shí)現(xiàn)。

鐵鐵們,數(shù)組及詳解冒泡排序講解就到此結(jié)束啦,請(qǐng)動(dòng)動(dòng)你們的手給作者點(diǎn)個(gè)??鼓勵(lì)吧,你們的鼓勵(lì)就是我的動(dòng)力?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-465274.html

到了這里,關(guān)于數(shù)組及詳解冒泡排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java練習(xí)題-用冒泡排序法實(shí)現(xiàn)數(shù)組排序

    Java練習(xí)題-用冒泡排序法實(shí)現(xiàn)數(shù)組排序

    ?作者簡(jiǎn)介:CSDN內(nèi)容合伙人、阿里云專家博主、51CTO專家博主、新星計(jì)劃第三季python賽道Top1?? ??個(gè)人主頁(yè):hacker707的csdn博客 ??系列專欄:Java練習(xí)題 ??個(gè)人格言:不斷的翻越一座又一座的高山,那樣的人生才是我想要的。這一馬平川,一眼見(jiàn)底的活,我不想要,我的人生

    2024年02月08日
    瀏覽(22)
  • Java---第四章(數(shù)組基礎(chǔ),冒泡排序,二分查找,多維數(shù)組)

    Java---第四章(數(shù)組基礎(chǔ),冒泡排序,二分查找,多維數(shù)組)

    概念: 數(shù)組是編程語(yǔ)言中的一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),能夠存儲(chǔ)一組相同類型的數(shù)據(jù) 作用: 存儲(chǔ)一組相同類型的數(shù)據(jù),方便進(jìn)行數(shù)理統(tǒng)計(jì)(求最大值,最小值,平均值以及總和),也可以進(jìn)行信息的展示 定義: 第一種: 只能在定義數(shù)組同時(shí)賦值時(shí)使用 第二種: 可以在定義數(shù)組

    2024年02月09日
    瀏覽(23)
  • C語(yǔ)言實(shí)現(xiàn)冒泡排序排列數(shù)組中的元素!

    C語(yǔ)言實(shí)現(xiàn)冒泡排序排列數(shù)組中的元素!

    ?按照 圖中的方法 來(lái)編寫程序: 1、 void* base, ? ?//base中存放的是待排序數(shù)據(jù)中第一個(gè)對(duì)象的地址 2、 size_t num, ? ?// 待排序數(shù)據(jù)元素的個(gè)數(shù) 3、 size_t width, ? ?// 待排序數(shù)據(jù)中一個(gè)元素的大小,單位是字節(jié) 4、i nt(__cdecl* compare)(const void* elem1, const void* elem2) // 函數(shù)指針 ?用來(lái)比

    2024年02月15日
    瀏覽(15)
  • 【C++實(shí)戰(zhàn)小項(xiàng)目】通訊錄(四) 冒泡排序通過(guò)string首字母排序多個(gè)數(shù)組

    【C++實(shí)戰(zhàn)小項(xiàng)目】通訊錄(四) 冒泡排序通過(guò)string首字母排序多個(gè)數(shù)組

    ???♂?iecne個(gè)人主頁(yè): : iecne的學(xué)習(xí)日志 ??每天 關(guān)注 iecne的作品,一起進(jìn)步 ??一起學(xué)習(xí),必看iecne ??希望大家多多支持??一起進(jìn)步呀! 首先制作一款通訊錄我們可以將它分為以下部分 增加聯(lián)系人 刪除聯(lián)系人 查找聯(lián)系人 修改聯(lián)系人 打印通訊錄 排序通訊錄 這一期我們

    2024年01月19日
    瀏覽(94)
  • 排序算法之詳解冒泡排序

    排序算法之詳解冒泡排序

    冒泡排序顧名思義,就是像冒泡一樣,泡泡在水里慢慢升上來(lái),由小變大。 雖然冒泡排序和冒泡并不完全一樣,但卻可以幫助我們理解冒泡排序。 一組無(wú)序的數(shù)組,要求我們從小到大排列 我們可以先將最大的元素放在數(shù)組末尾 再將第二大的數(shù)放在數(shù)組的倒數(shù)第二個(gè)位置 再

    2023年04月25日
    瀏覽(24)
  • 排序算法——冒泡排序詳解及優(yōu)化

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

    對(duì)于一個(gè)排序算法,假設(shè)兩個(gè)相同的元素Ai和Aj· 在排序前這兩個(gè)元素滿足條件ij,即Ai在Aj之前· 在排序后Ai仍在Aj之前,則稱為排序算法為穩(wěn)定排序· 否則稱這個(gè)算法為不穩(wěn)定排序 穩(wěn)定性的說(shuō)明 排序的穩(wěn)定性并不影響排序算法的效率,穩(wěn)定性只對(duì)類/結(jié)構(gòu)體類型數(shù)據(jù)有影響 這

    2024年02月06日
    瀏覽(19)
  • 【六大排序詳解】終篇 :冒泡排序 與 快速排序

    【六大排序詳解】終篇 :冒泡排序 與 快速排序

    冒泡排序如同泡泡上升一樣,逐個(gè)逐個(gè)向上冒,一個(gè)接一個(gè)的冒上去。兩兩比較,較大者(較小者)向后挪動(dòng)。全部遍歷一遍即可完成排序。 首先從頭開(kāi)始,兩兩相互比較。每次排好一個(gè)最大(最?。?然后在從頭開(kāi)始,兩兩比較 至已排序部分之前。 依次往復(fù),全部遍歷一遍

    2024年02月03日
    瀏覽(18)
  • 兩個(gè)基本排序算法【選擇排序,冒泡排序】【詳解】

    兩個(gè)基本排序算法【選擇排序,冒泡排序】【詳解】

    一、前言 二、選擇排序 2.1 選擇排序(基礎(chǔ)版)【必會(huì)】 2.2 選擇排序(優(yōu)化版) 三、冒泡排序 3.1 冒泡排序(基礎(chǔ)版)【必會(huì)】 3.2 冒泡排序(外循環(huán)優(yōu)化版) 3.3 冒泡排序(內(nèi)循環(huán)優(yōu)化版) 四、總結(jié) ??排序法主要分為兩種: 比較排序 和 非比較排序 。常見(jiàn)的比較排序有

    2024年02月03日
    瀏覽(17)
  • JavaScript函數(shù)變量的生命周期,自執(zhí)行函數(shù)、閉包、反轉(zhuǎn)數(shù)組案例及冒泡排序案例

    JavaScript函數(shù)變量的生命周期,自執(zhí)行函數(shù)、閉包、反轉(zhuǎn)數(shù)組案例及冒泡排序案例

    一、變量的生命周期 JavaScript 變量的生命期從它們被聲明的時(shí)間開(kāi)始。 局部變量會(huì)在函數(shù)運(yùn)行以后被刪除。 全局變量會(huì)在頁(yè)面關(guān)閉后被刪除。 二、自執(zhí)行函數(shù) 執(zhí)行函數(shù)通常都是定義之后立即執(zhí)行,以后都不再會(huì)調(diào)用,所以聲明時(shí)可以省略函數(shù)名,因此自執(zhí)行函數(shù)又叫匿名函

    2024年02月06日
    瀏覽(21)
  • 選擇排序 | 冒泡排序 | C語(yǔ)言(詳解)

    選擇排序 | 冒泡排序 | C語(yǔ)言(詳解)

    1,基本知識(shí) 對(duì)排序的雙層 for 循環(huán)的理解:外層 控制趟數(shù),里層 不斷地對(duì)數(shù)組進(jìn)行遍歷。 2,逐層深入 經(jīng)典的選擇排序GIF動(dòng)圖,如下: ? 關(guān)鍵部分: Ⅰ ,從數(shù)組中的第一個(gè)元素開(kāi)始,不斷地選定一個(gè)元素(引用其下標(biāo) markindex,如下代碼)與其之后的元素進(jìn)行比較,如果發(fā)

    2024年02月04日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包