国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

2021-09-08三道程序(序列中刪除指定數(shù)字、有序序列判斷、有序序列合并)

phpmatt / 1703人閱讀

摘要:序列中刪除指定數(shù)字程序創(chuàng)建一個數(shù)組輸入一個整數(shù)輸入個整數(shù)到數(shù)組里多組輸入輸入你想要刪除的數(shù)字遍歷數(shù)組如果不是我們想除的值,進(jìn)入語句為什么要這么寫,接著往下看自己給自己賦值,賦

序列中刪除指定數(shù)字

程序:

#includeint main(){	int arr[30] = { 0 };// 創(chuàng)建一個數(shù)組	int n = 0;	int z = 0;    scanf("%d", &n);// 輸入 一個整數(shù) n	int i = 0;	for (i = 0; i < n; i++)// 輸入 n(n<=30) 個整數(shù) 到數(shù)組 arr里	{		scanf("%d", &arr[i]);// 多組輸入	}	scanf("%d",&z);// 輸入你想要刪除的數(shù)字	int j = 0;	for (i = 0; i < n; i++)// 遍歷數(shù)組	{		if (arr[i] != z) // 如果不是我們想除的值,進(jìn)入 if 語句		// 為什么要這么寫,接著往下看		{			arr[j++] = arr[i];// 自己 給自己賦值,賦完之后 j++,i 再 ++,這樣就能確保不會改變原有數(shù)據(jù)的順序		}	}	for (i = 0; i < j; i++)// 打印數(shù)組(注意 i < j,等我下面講解,你就直接妙在那了 )	{		printf("%d ", arr[i]);	}	return 0;}

?

if (arr[i] != z),讓我來通過畫圖方式向你們表示

即 i 為 3時 ,即a[3] == 4 。是我們相除的值時,我們就越過它,怎么越過而不會改變它的順序呢?

答案就在 循環(huán)的 i++ 和 a[j++] 上,當(dāng)我們遇到想要刪除的數(shù)字元素時,我們是不滿足 if 語句 if (arr[i] != z) ,所以它跳到 i++,進(jìn)行自增,跳過該數(shù)字元素,而a[j++] 中 j 的后置加加,因?yàn)闆]有執(zhí)行的機(jī)會,而保持原來位置,直到,滿足 if 語句時,在對其進(jìn)行賦值。這樣就間接刪除我們想要刪除的值得元素,是不是很妙?

而且 遍歷完 a數(shù)組時(完成刪除元素之后),a[j++] 中 j 的 后置加加,讓它再加一,(這正是它絕妙之處),

	for (i = 0; i < j; i++) // arr[j] 存放 j 個 元素, 下標(biāo)為 0 ~ j -1  細(xì)品!!!	{		printf("%d ", arr[i]);	}	return 0;}

你會發(fā)現(xiàn)下標(biāo) j-1 之后 剩余重復(fù)元素(我們不需要的),一個都沒有輸出,因?yàn)?j -1 ,將其中斷,所以不會訪問到我們需要的數(shù)。

?

另外我再提一點(diǎn),有人可能會使用 從前向后覆蓋,以此來間接刪除元素

?
?

有序序列判斷

#includeint main(){	int arr[30] = { 0 };// 創(chuàng)建一個數(shù)組	int n = 0;	int i = 0;	int j = 0;	scanf("%d", &n);//  輸入一個整數(shù) n	for (i = 0; i < n; i++) // 輸入 n 個整數(shù)到 數(shù)組里	{		scanf("%d", &arr[i]); // 多組輸入	}	for (i = 1; i < n; i++) // 作用: 我們只需要 它的 第一個元素	{	// 有序數(shù)組: 升序 降序             // 升序: 后一個元素 比 前一個元素 大,以此類推		if (arr[i] >= arr[i - 1])			{			for (j = i; j < n; j++)//遍歷數(shù)組,i = 1 方便 比較大小,來判斷 升序			{				if (arr[j] < arr[j - 1])// 如果在 升序中 出現(xiàn)這種 相反情況的,那么它肯定不是升序數(shù)組,也不是降序				{					printf("unsorted/n");//  所以輸出這條  unsorted  無序的					goto end;// 通過goto 直接跳到 return 0,程序結(jié)束					// 當(dāng)然 你也可以寫 return 0; 也是一樣				}			}			if (j == n)//  當(dāng)遍歷 數(shù)組 時,意味著 數(shù)組 為升序			{				printf("sorted/n");// sorted  有序的				goto end;			}		}             // 降序  第二個元素 小于 第 一個元素,以此類推		else if (arr[i] <= arr[i - 1])// else if 是防止 你們有人使用break,如果是 if 的話, 跳出最近的循環(huán),會繼續(xù)進(jìn)行判斷,會出現(xiàn)意外情況,明明 是無序的,卻輸出 有序的(降序的)		{			for (j = i; j < n; j++)//遍歷數(shù)組,i = 1 方便 比較大小,來判斷 降序			{				if (arr[j] > arr[j - 1])// 如果在 降序中 出現(xiàn)這種 相反情況的,那么它肯定不是降序數(shù)組,也不是升序				{					printf("unsorted/n");// 所以 輸出 unsorted 無序的					goto end;				}			}			if (j == n)//  當(dāng)遍歷 數(shù)組 時,意味著 數(shù)組 為降序			{				printf("sorted/n");// sorted  有序的				goto end;			}		}	}end:		return 0;}

?

有序序列合并

#include#includeint compare(const void* e1, const void* e2){	return *(int*)e1 - *(int*)e2;}int main(){	int n = 0;	int m = 0;	int a1[30] = { 0 };	int a2[30] = { 0 };	scanf("%d %d", &n, &m);// 輸出兩個整數(shù) n  和 m	int i = 0;	for (i = 0; i < n; i++)// 輸入 n 個整數(shù) 放進(jìn) 數(shù)組 a1	{		scanf("%d", &a1[i]);	}	for (i = 0; i < m; i++)// 輸入 m 個整數(shù) 放進(jìn) 數(shù)組 a2	{		scanf("%d", &a2[i]);	}	for (i = 0; i <  m; i++)// 數(shù)組a1[n] 最后一個元素的下標(biāo)為 n-1,所以我們追加數(shù)組,應(yīng)該從下標(biāo) n 開始賦值 追加數(shù)組 a2	{		a1[n+i] = a2[i];	}	qsort(a1, n + m, sizeof(int), compare);// 這里使用的qsort 進(jìn)行排序 注意添加頭文件 stdlib,h	for (i = 0; i < (n + m); i++)//最后輸出一下數(shù)組a1就行了,因?yàn)?我們是把 a2  追加 給了 a1	{		printf("%d ", a1[i]);	}	return 0;}

如果大家有什么新思維,可以在下方評論。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/119680.html

相關(guān)文章

  • 初探STL之算法

    摘要:算法部分主要由頭文件組成。數(shù)值算法對容器內(nèi)容進(jìn)行數(shù)值計(jì)算。在指定范圍內(nèi)查找由輸入的另外一對標(biāo)志的第二個序列的最后一次出現(xiàn)。重載函數(shù)使用自定義比較操作。刪除指定范圍內(nèi)所有等于指定元素的元素。返回,指出序列中最小的元素。 STL算法部分主要由頭文件,,組成。要使用 STL中的算法函數(shù)必須包含頭文件,對于數(shù)值算法須包含,中則定義了一些模板類,用來聲明函數(shù)對象。 分類 STL中算法大致分為...

    nanfeiyan 評論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)和算法

    摘要:棧被稱為一種后入先出的數(shù)據(jù)結(jié)構(gòu)。散列使用的數(shù)據(jù)結(jié)構(gòu)叫做散列表。這些操作需要求助于其他數(shù)據(jù)結(jié)構(gòu),比如下面介紹的二叉查找樹。 前言 在過去的幾年中,得益于Node.js的興起,JavaScript越來越廣泛地用于服務(wù)器端編程。鑒于JavaScript語言已經(jīng)走出了瀏覽器,程序員發(fā)現(xiàn)他們需要更多傳統(tǒng)語言(比如C++和Java)提供的工具。這些工具包括傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(如鏈表,棧,隊(duì)列,圖等),...

    EastWoodYang 評論0 收藏0
  • 排序算法

    摘要:排序代碼實(shí)現(xiàn)和一概念排序算法的穩(wěn)定性穩(wěn)定性穩(wěn)定排序算法會讓原本有相等鍵值的紀(jì)錄維持相對次序。交換的結(jié)果導(dǎo)致結(jié)點(diǎn)的值變化了,重復(fù),,的操作,直到?jīng)]有孩子時跳出代碼實(shí)現(xiàn)構(gòu)建初始堆堆排序算法思想大頂堆舉例將待排序的序列構(gòu)造成一個大頂堆。 排序 代碼實(shí)現(xiàn):Java 和 Python 一、概念 1.1 排序算法的穩(wěn)定性 穩(wěn)定性:穩(wěn)定排序算法會讓原本有相等鍵值的紀(jì)錄維持相對次序。也就是如果一個排序...

    kevin 評論0 收藏0
  • 排序算法

    摘要:排序代碼實(shí)現(xiàn)和一概念排序算法的穩(wěn)定性穩(wěn)定性穩(wěn)定排序算法會讓原本有相等鍵值的紀(jì)錄維持相對次序。交換的結(jié)果導(dǎo)致結(jié)點(diǎn)的值變化了,重復(fù),,的操作,直到?jīng)]有孩子時跳出代碼實(shí)現(xiàn)構(gòu)建初始堆堆排序算法思想大頂堆舉例將待排序的序列構(gòu)造成一個大頂堆。 排序 代碼實(shí)現(xiàn):Java 和 Python 一、概念 1.1 排序算法的穩(wěn)定性 穩(wěn)定性:穩(wěn)定排序算法會讓原本有相等鍵值的紀(jì)錄維持相對次序。也就是如果一個排序...

    binaryTree 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<