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

C語言庫函數(shù)之 qsort 講解、使用及模擬實現(xiàn)

這篇具有很好參考價值的文章主要介紹了C語言庫函數(shù)之 qsort 講解、使用及模擬實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

引入

我們在學(xué)習(xí)排序的時候,第一個接觸到的應(yīng)該都是冒泡排序,我們先來復(fù)習(xí)一下冒泡排序的代碼,來作為一個鋪墊和引入。

代碼如下:

#include<stdio.h>

void bubble_sort(int *arr, int sz)
{
	int i = 0;
	for (i = 0; i < sz - 1; i++)
	{
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
}

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);

	bubble_sort(arr, sz);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

很簡單的一種排序方法,但我們可以發(fā)現(xiàn)一個問題,那就是冒泡排序不夠通用,它只能用于整型數(shù)組的排序,如果我要排序float類型,或者排序結(jié)構(gòu)體要怎么辦呢。

下面,我們就來介紹一個比較萬能的排序函數(shù),qsort函數(shù)

簡介

先來簡單了解一下qsort函數(shù)的各個部分

語法格式

它的固定格式如下:

int cmp_int(const void* e1, const void* e2)
{

}

注意:他的格式是固定的,比如返回值類型必須是int類型,形參的類型也是固定的,只有返回值的部分是自己編寫的,也就是說,當(dāng)返回值類型不是int的時候,我們需要進行強制類型轉(zhuǎn)換或者手動將其返回值改成int類型
(這在下文會詳細(xì)說明)

參數(shù)解釋

在調(diào)用函數(shù)時,傳參格式如下:

void qsort(void* base,
	size_t num,
	size_t width,
	int (*cmp)(const void* e1, const* e2)
);

可以看一下這張圖,里面講解了qsort函數(shù)的各個參數(shù)分別表示的是什么,
C語言庫函數(shù)之 qsort 講解、使用及模擬實現(xiàn),C語言知識點,c語言,java,算法

base:起始位置,待排序數(shù)組的首元素地址 num:數(shù)組的大小,單位是元素,待排序數(shù)組的元素個數(shù)
width:元素大小,單位是字節(jié),待排序數(shù)組的單個元素的大小 cmp:函數(shù)指針(比較函數(shù):compare
function),比較兩個元素的函數(shù)的地址
解釋:對于不同類型元素的比較的方法是不同的,此處就是將兩個元素的比較方法寫成函數(shù),傳到qsort函數(shù)中,然后使用指針cmp進行調(diào)用
e1和e2可以簡單地認(rèn)為是要比較的兩個元素的地址,(下面會做補充說明)

對void *的解釋

先拋出一個問題:下面這個代碼有什么問題

int main()
{
	int a = 0;
	int *pa = &a;
	char* pc = &a; 
	return 0;
}

問題就是:第四行和第五行:此處雖然可以存儲,但會報警告:從“int *”

到“char *”的類型不兼容。

那么,我們這時就可以使用,void *(無指針類型)來解決這個問題

void* p = &a;
//void *類型的指針可以接收任意類型的地址

此處就可以很好地解釋qsort函數(shù)的第一個參數(shù):void* base

補充:

對于void *類型的指針無法進行解引用
因為不知道進行解引用之后,要訪問幾個字節(jié)
同理,也無法進行無符號型的指針與整數(shù)的運算

那么,在qsort函數(shù)中,如何比較e1與e2呢
可以將二者強制轉(zhuǎn)換成所需的類型(代碼中會提到這一點)

返回值

下圖是英文版的介紹
C語言庫函數(shù)之 qsort 講解、使用及模擬實現(xiàn),C語言知識點,c語言,java,算法

對qsort函數(shù)返回值的解釋
當(dāng)e1<e2,返回值小于0
當(dāng)e1=e2,返回值等于0
當(dāng)e1>e2 返回值大于0

提示:所以可以利用這個規(guī)律將不是int類型的返回值手動變成int型(下文float類型那里會詳細(xì)說明)

使用

此處我們舉三個例子,分別是int、float和結(jié)構(gòu)體類型變量的比較

int類型

明確需要

我們需要三個函數(shù):main函數(shù)(調(diào)用test函數(shù)),test函數(shù)(調(diào)用qsort函數(shù)、打印最終結(jié)果),和cmp_int函數(shù)(提供元素的比較方法)

test函數(shù)

1.創(chuàng)建數(shù)組
2.計算大小
3.調(diào)用qsort函數(shù)
4.打印最終結(jié)果

cmp_int函數(shù)

照著前面的固定格式,然后返回值那里就直接用

(這里我一寫*,他就識別成斜體,大家直接看下面的代碼吧…)

最終代碼

#include<stdlib.h>

int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e1 - *(int*)e2;

}

void test1()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	qsort(arr, sz, sizeof(arr[0]), cmp_int);

	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}

int main()
{
	test1();

	return 0;
}

還是比較好理解的,就不做過多解釋了

float類型

對于cmp_float函數(shù)的說明

問題

我們知道cmp_float函數(shù)的返回值必須是int類型的,但,

*(float*)e1 - *(float*)e2

的返回類型是float類型,在運行時會報一個警告:return”: 從“float”轉(zhuǎn)換到“int”,可能丟失數(shù)據(jù),
此處提供兩種解決方法:

1.使用if else語句手動判斷大小并根據(jù)情況分別返回一個負(fù)數(shù)、0、一個正數(shù)
代碼如下:

if (*(float*)e1 > *(float*)e2)
{
	return 1;
}
else if (*(float*)e1 == *(float*)e2)
{
	return 0;
}
else
{
	return -1;
}

2.使用強制類型轉(zhuǎn)換,轉(zhuǎn)換成int類型

最終代碼


#include<stdlib.h>

 
int cmp_float(const void* e1, const void* e2)
{
	return *(float*)e1 - *(float*)e2;
}

 
 

void test2()
{
	float f[] = { 9.0, 8.0, 7.0, 6.0 ,5.0 ,4.0 ,3.0, 2.0, 1.0 };
	int sz = sizeof(f) / sizeof(f[0]);
	qsort(f, sz, sizeof(f[0]), cmp_float);


	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%.3f ", f[i]);
	}
}

 


int main()
{
	test2();

	return 0;
}


結(jié)構(gòu)體類型

如果我們想要排序結(jié)構(gòu)體類型的變量,那就很有意思了,我們一步一步來分析

明確需要

main函數(shù)、test3函數(shù)、cmp_stu函數(shù)
下面我們重點解釋一下test3函數(shù)和cmp_stu函數(shù)

test3函數(shù)

1.創(chuàng)建結(jié)構(gòu)體類型的數(shù)組,并初始化
2.求數(shù)組元素個數(shù)
3.調(diào)用qsort函數(shù),里面包含了cmp_stu函數(shù)的地址,即調(diào)用cmp_stu函數(shù)

cmp_stu函數(shù)

照貓畫虎

我們按照前面的兩個例子寫出來的應(yīng)該是

int cmp_struct(const void* e1, const void* e2)
{
	return *(struct*)e1 - *(struct*)e2;

}

但這么寫是錯誤的, 因為結(jié)構(gòu)體是復(fù)雜對象,無法直接用 > 或 < 進行比較,那么我們就需要確定是用哪個成員去作為比較的標(biāo)準(zhǔn)
再通過->來訪問相應(yīng)的成員

下面給出兩個例子,此處分別以年齡age作為排序標(biāo)準(zhǔn)和以名字name來排序,

cmp_stu_by_age函數(shù)

將e1和e2從void* 類型轉(zhuǎn)換成結(jié)構(gòu)體類型指針,然后再通過->訪問相應(yīng)的成員
然后直接讓二者相減即可,此處在強制類型轉(zhuǎn)換時別忘了寫上struct就行

int cmp_stu_by_age(const void* e1, const void* e2)
{
	return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
	
}

這個函數(shù)的實現(xiàn)還是與cmp_int函數(shù)有一些相似的,

cmp_stu_by_name函數(shù)

提示:此處比較的是字符串,同樣不能用 > < 來進行比較
而是要用strcmp函數(shù)進行比較,包含頭文件<string.h>

int cmp_stu_by_name(const void* e1, const void* e2)
{
	return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
	 
}

最終代碼

#include<stdlib.h>

struct Stu
{
	char name[40];
	int age;
};

int cmp_stu_by_age(const void* e1, const void* e2)
{
	return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
	
}

 
int cmp_stu_by_name(const void* e1, const void* e2)
{
	return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
	提示,此處比較的是字符串,同樣不能用 > < 來進行比較
		而是要用strcmp函數(shù)進行比較
}


 

void test3()
{
	struct Stu s[3] = { {"zhang", 20},{"li", 30},{"wang", 40} };
	int sz = sizeof(s) / sizeof(s[0]);
	qsort(s, sz, sizeof(s[0]), cmp_stu_by_age);
}


int main()
{
	test3();

	return 0;
}

三個例子到這里就介紹結(jié)束了,其實這樣看下來也不是很難理解。
下面我們來學(xué)習(xí)qsort函數(shù)的模擬實現(xiàn),也就是優(yōu)化bubble_sort函數(shù),使它能排序任意類型的元素

模擬實現(xiàn)

引入:

此處提出一個問題:如果說,我不想使用qsort函數(shù),我就想使用冒泡函數(shù),那我要如何改進它,才能達(dá)到和qsort函數(shù)相同的效果呢?

函數(shù)調(diào)用方面的改進

接收地址

如果說想讓冒泡排序函數(shù)具有排序任意類型元素的功能,那么首先,它就應(yīng)該能接收任意類型元素的地址(類似于qsort中的base參數(shù))

元素個數(shù)

函數(shù)需要知道要排序多少個元素,所以就需要傳入數(shù)組的大小(類似num參數(shù))

元素大?。▽挾龋?/h4>

知道了待排序數(shù)組的起始位置和元素個數(shù)后,我們需要對數(shù)組中的元素進行移動操作, 那么我們就需要知道元素的大小是什么

簡易版框架如下:

void bubble_sort(void* base, int sz, int width)
{
	int i = 0;//次數(shù)
	for (i = 0; i < sz; i++)
	{
		//每次需要比較的元素對數(shù)
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)//比較兩個元素
		{

		}
	}
}

疑問1:

基本框架搭建好了,那我們要如何比較兩個元素呢,我們又不知道他們的類型?

所以我們在傳參的時候,還需要將兩個元素的比較方法(函數(shù))一并傳進bubble_sort函數(shù)中,也就是第四個參數(shù)

首先,要傳入的肯定是函數(shù)的地址,
其次,我們需要返回一個值來告訴我們比較的結(jié)果是什么(此處類似qsort函數(shù)的返回值)
最后,對于要比較的兩個元素,因為要求函數(shù)具有通用性,所以參數(shù)類型就是void *類型

代碼如下:

void bubble_sort(void* base, int sz, int width, int(*cmp)(void* e1,void* e2) )
{
	int i = 0;//次數(shù)
	for (i = 0; i < sz; i++)
	{
		//每次需要比較的元素對數(shù)
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)//比較兩個元素
		{
			if(cmp()>0)//交換if(cmp()>0)//交換
			{
				

			}
				

			}
		}
	}
}

疑問2:if語句

if(cmp()>0)//交換
	{
				
	}

我們知道這個語句是比較兩個元素,那我們怎么找到這倆個元素呢?

我們知道,base就是首元素的地址,

想法1

那么有人想通過加減整數(shù)來找到后面的元素,這個問題在我前面的文章提到過:因為元素是void*類型的,不知道元素大小,無法與整數(shù)進行運算

想法2

那么又有人想:將base傳換成(int*)類型再運算不就行了嗎,
還是不對,因為我們不知道傳進來的參數(shù)究竟是什么類型,所以我們不能假定他的類型

想法3

小明這時候提出來:我們已經(jīng)知道了每個元素的大?。簑idth,那可不可以先把base轉(zhuǎn)換成char*類型,再加上每個元素的字節(jié)大小width呢?

這么做就可以了,
因為char*大小是一個字節(jié),每次移動width個字節(jié),就進入到下一個元素中了

if語句代碼如下:

if(cmp((char*)base+ j*width, (char*)base +(j+1)*width)>0)//交換
{
	
}

疑問3:怎么交換

這里先創(chuàng)建一個swap函數(shù)用于兩個元素的交換

void Swap(char*buf1, char*buf2)
{

}

void bubble_sort(void* base, int sz, int width)
{
	int i = 0;//次數(shù)
	for (i = 0; i < sz; i++)
	{
		//每次需要比較的元素對數(shù)
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)//比較兩個元素
		{
			if(cmp((char*)base+ j*width, (char*)base +(j+1)*width)>0)//交換
			{
				Swap((char*)base + j * width, (char*)base + (j + 1) * width);

			}
		}
	}
}

但是,我們仔細(xì)看,Swap函數(shù)接收的參數(shù)類型是char*,一個字節(jié)大小,如果我這個元素是8個字節(jié)類型,要怎么交換呢,
所以如果按照一個字節(jié)一個字節(jié)這么交換的方式,我們就需要知道要交換的元素的字節(jié)大?。╳idth),以及要交換幾次

代碼如下:

void Swap(char*buf1, char*buf2, int width)
{
	int i = 0;
	for (i = 0; i < width; i++)
	{
		char tmp = *buf1;
		*buf1 = *buf2;
		*buf2 = tmp;
		buf1++;
		buf2++;
	}
}

簡單實現(xiàn)(int類型)

完整代碼如下:

void Swap(char*buf1, char*buf2, int width)
{
	int i = 0;
	for (i = 0; i < width; i++)
	{
		char tmp = *buf1;
		*buf1 = *buf2;
		*buf2 = tmp;
		buf1++;
		buf2++;
	}
}

void bubble_sort(void* base, int sz, int width, int (*cmp)(void*e1, void*e2))
{
	int i = 0;//次數(shù)
	for (i = 0; i < sz; i++)
	{
		//每次需要比較的元素對數(shù)
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)//比較兩個元素
		{
			if(cmp((char*)base+ j*width, (char*)base +(j+1)*width)>0)//交換
			{
				Swap((char*)base + j * width, (char*)base + (j + 1) * width, width);

			}
		}
	}
}

int cmp_int(const void* e1, const void* e2)
{
	return *(int*)e1 - *(int*)e2;
}

void test4()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	bubble_sort(arr, sz, sizeof(arr[0]), cmp_int);
}

int main()
{
	test4();

	return 0;
}

想要進行其他類型的比較只需要在調(diào)用bubble_sort函數(shù)時,將第四個參數(shù)修改成對應(yīng)的比較方法即可(當(dāng)然,這需要自己構(gòu)建)

小提示:
->的優(yōu)先級高于強制類型轉(zhuǎn)換,所以要用()先將強制類型轉(zhuǎn)換括起來,先轉(zhuǎn)換,再訪問

題外話

因為想要使bubble_sort函數(shù)具有通用性,所以我們需要將不同類型元素的比較方法的函數(shù)的地址傳進來(也就是第四個參數(shù)),而這種將函數(shù)地址傳進另一個函數(shù),由這個函數(shù)去實現(xiàn)調(diào)用的方法,就稱為回調(diào)函數(shù)(大概就是這個意思),我這幾天在整理指針的知識,有時間就寫一篇博客。

結(jié)語

沒想到感覺沒怎么寫,就寫了六千多字(捂臉)
只能再一次感嘆C的豐富

文章到這里就結(jié)束了,希望這篇文章對你有所幫助,我們下篇文章見~文章來源地址http://www.zghlxwxcb.cn/news/detail-652872.html

到了這里,關(guān)于C語言庫函數(shù)之 qsort 講解、使用及模擬實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【C語言】指針的進階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式

    【C語言】指針的進階(二)—— 回調(diào)函數(shù)的講解以及qsort函數(shù)的使用方式

    目錄 1、函數(shù)指針數(shù)組 1.1、函數(shù)指針數(shù)組是什么? ?1.2、函數(shù)指針數(shù)組的用途:轉(zhuǎn)移表 2、擴展:指向函數(shù)指針的數(shù)組的指針 3、回調(diào)函數(shù) 3.1、回調(diào)函數(shù)介紹 ?3.2、回調(diào)函數(shù)的案例:qsort函數(shù) 3.2.1、回顧冒泡排序 ?3.2.1、什么是qsort函數(shù)? 函數(shù)指針數(shù)組 是什么?首先主語是 數(shù)

    2024年02月07日
    瀏覽(23)
  • 【C語言】回調(diào)函數(shù),qsort排序函數(shù)的使用和自己實現(xiàn),超詳解

    【C語言】回調(diào)函數(shù),qsort排序函數(shù)的使用和自己實現(xiàn),超詳解

    先記錄一下訪問量突破2000啦,謝謝大家支持?。?! 這里是上期指針進階鏈接,方便大家查看:添加鏈接描述 大家好呀,今天分享一下上期指針進階中剩余的內(nèi)容——回調(diào)函數(shù),這個很重要滴,讓我們一起來學(xué)會學(xué)懂他吧?。。?標(biāo)準(zhǔn)概念: 回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)

    2024年02月12日
    瀏覽(24)
  • 冒泡排序模擬實現(xiàn)qsort()函數(shù)

    冒泡排序模擬實現(xiàn)qsort()函數(shù)

    要模擬qsort()函數(shù),我們首先要知道qsort()函數(shù)的特點: 使用快速排序的方法。 適用于任何數(shù)據(jù)類型的排序。 但由于部分學(xué)者還沒有學(xué)習(xí)快速排序算法,所以本篇博客采用冒泡排序來模擬功能類似于qsort()的函數(shù)bubble_sort。 C庫對qsort()函數(shù)解釋: 我們得到的關(guān)于qsort()函數(shù)參

    2024年02月16日
    瀏覽(28)
  • qsort函數(shù)的應(yīng)用以及模擬實現(xiàn)

    qsort函數(shù)的應(yīng)用以及模擬實現(xiàn)

    ??個人主頁:?? :???初階牛??? ??推薦專欄: ?????? c語言進階 ??個人信條: ??知行合一 ??本篇簡介::介紹庫函數(shù)qsort函數(shù)的模擬實現(xiàn)和應(yīng)用 金句分享: ?追光的人,終會光芒萬丈.? 庫函數(shù)查詢網(wǎng)站(建議使用 舊版本 查詢) 頭文件: stdlib.h 功能介紹: 使用函數(shù) 確定順

    2024年02月02日
    瀏覽(22)
  • 模擬實現(xiàn)qsort函數(shù)(采用冒泡排序的方式)

    模擬實現(xiàn)qsort函數(shù)(采用冒泡排序的方式)

    前言: 之前我在C語言:指針詳解【進階】后篇中提到了 qsort函數(shù) , qsort函數(shù) 作為一個庫函數(shù),在我們?nèi)粘5拇a編寫中可能會用到,在上面提到的文章中我們也進行使用了這個函數(shù),大家也了解了一些這個函數(shù)的使用方法,但我們作為學(xué)習(xí)者,我們不僅要會用,還要知道這

    2024年02月05日
    瀏覽(49)
  • 深入理解回調(diào)函數(shù)qsort:從入門到模擬實現(xiàn)

    深入理解回調(diào)函數(shù)qsort:從入門到模擬實現(xiàn)

    ??博客主頁:江池俊的博客 ?收錄專欄:C語言進階之路 ??專欄推薦:?C語言初階之路 ?數(shù)據(jù)結(jié)構(gòu)探索 ??代碼倉庫:江池俊的代碼倉庫 ??? 社區(qū):GeekHub社區(qū) ? ??歡迎大家點贊??評論??收藏? 回調(diào)函數(shù)和 qsort 是 C語言編程中重要的概念,它們?yōu)槲覀兲峁┝藦姶蟮墓ぞ?/p>

    2024年02月10日
    瀏覽(27)
  • c語言用冒泡排序模擬實現(xiàn)qsort排序

    c語言用冒泡排序模擬實現(xiàn)qsort排序

    1、簡單介紹冒泡排序 冒泡排序就是兩兩相鄰元素進行比較,如果不滿足順序就進行交換?,F(xiàn)有一組整數(shù),將其用冒泡排序?qū)崿F(xiàn)排序為升序。 假設(shè)有這樣一組整數(shù):9 8 7 6 5? ? 由此可知,如果一個整型數(shù)組有num個元素,則需走num-1趟,若走在第i趟,則在第i趟內(nèi)需要比較num-1

    2024年02月15日
    瀏覽(22)
  • 【C語言】剖析qsort函數(shù)的實現(xiàn)原理

    【C語言】剖析qsort函數(shù)的實現(xiàn)原理

    主頁:17_Kevin-CSDN博客 專欄:《C語言》 本文將從回調(diào)函數(shù),qsort函數(shù)的應(yīng)用,qsort函數(shù)的實現(xiàn)原理三個方面進行講解,請自行跳轉(zhuǎn)至相對位置進行閱讀~? 目錄 回調(diào)函數(shù) qsort函數(shù)的應(yīng)用 qsort函數(shù)實現(xiàn)原理 回調(diào)函數(shù)實際上是一個指針,指向的是一個函數(shù)。它作為一個參數(shù)傳遞給

    2024年03月14日
    瀏覽(24)
  • C語言——qsort函數(shù)的使用(詳解)

    C語言——qsort函數(shù)的使用(詳解)

    qsort()函數(shù)(quick sort)是八大排序算法中的快速排序,能夠排序任意數(shù)據(jù)類型的數(shù)組其中包括整形,浮點型,字符串甚至還有自定義的結(jié)構(gòu)體類型。 點擊網(wǎng)站:https://cplusplus.com/reference/——再點擊查看老版本函數(shù)超鏈接口(查看函數(shù)的含義) 老版本 在搜索框輸入要查詢的

    2024年02月14日
    瀏覽(21)
  • 【C語言】——指針六:冒泡排序與qsort函數(shù)的實現(xiàn)

    【C語言】——指針六:冒泡排序與qsort函數(shù)的實現(xiàn)

    1.1、冒泡排序的原理 ?? ??在實踐過程中,我們難免會碰到要給一組數(shù)據(jù)排序的情況。如果我們掌握一些排序的算法,效率就會高很多。排序的方法有方法有很多,如:希爾排序,快速排序,堆排序……,今天,我們講的排序方法就是—— 冒泡排序 ! ?? ??冒泡排序

    2024年04月16日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包