真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【常用的經(jīng)典算法#C語言】-創(chuàng)新互聯(lián)

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站制作、做網(wǎng)站、外貿營銷網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的龍圩網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
常用的經(jīng)典算法#C語言
前言

`簡單的記錄自己的成長過程吧

一、累加和,連乘積,大最小值

1、累加和
顧名思義就是把數(shù)字一個一個相加然后求和,代碼如下:

#includeint main()
{//從一加到一百
	int sum = 0;
	for (int i = 1; i<= 100; i++)
	{sum = sum + i;//累加法
	}
	printf("1+2+…+99+100=%d\n", sum);//打印和
return 0;
}

2、連乘積
類似于累加和,不同的是這里是相乘,代碼如下:

#includeint main()
{int sum = 1;
	for (int j = 1; j<= 25; j++)//數(shù)字過大的話int類型存不下
	{sum *= j;//連乘積
	}
	printf("1*2*…*99*100=%d\n", sum);
	return 0;
}
//結果應該是1*2*…*99*100=2076180480,是相當大的一個數(shù)字了。

3、求大最小值
在一組數(shù)據(jù)中找到大或者最小值,這個數(shù)據(jù)可以是一維線性的,也可以是二維矩陣的。

一維:在這里就求大值了

#includeint main()
{int arr[10] = {1,2,45,67,54,34,89,98,34,57 };//定義一個一維數(shù)組存放數(shù)據(jù)
	int max = arr[0];//假設第一個是大值
	for (int i = 0; i< 10; i++)//利用for循環(huán)把數(shù)組歷遍
	{if (arr[i] >max)
			max = arr[i];
	}
	printf("max=%d", max);
	return 0;
}

二維:這里求最小值

#includeint main()
{int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9} };//定義一個二維數(shù)組來存放數(shù)據(jù)
	int min = arr[0][0];//假設第一個為最小值
	for (int j = 0; j< 3; j++)//歷遍二維數(shù)組
	{for (int i = 0; i< 3; i++)
		{	if (arr[j][i]< min)
				min = arr[j][i];
		}
	}
	printf("min=%d", min);
	return 0;
}
二、查找

1、順序查找
親應該都知道,我就不贅述了
2、折半查找(二分查找法)
這么說吧,假如一顆鉆石被自由女神像吃進肚子了,然后你想要找到它,于是膽小的你就把自由女神像炸成了兩半,結果不在下半部分,那么你就繼續(xù)把上半部分炸成兩半,那你應該懂折半查找了吧。話不多說,給代碼:

#includeint main()
{int n;
	scanf("%d", &n);
	int arr[10] = {2,4,35,56,7,67,9,8,10,99 };//定義一個一維數(shù)組來存放數(shù)據(jù)
	int left = 0;//最左邊下標
	int right = 9;//最右邊下標
	int mid = (left + right) / 2;//神像一分為二
	while (left<=right)//進入循環(huán)
	{if (arr[mid]< n)//中間的數(shù)字小于你要查找的數(shù)字
		{	left = mid + 1;
			mid = (left + right) / 2;
		}
		if (arr[mid] >n)//中間的數(shù)字大于你要查找的數(shù)字
		{	right = mid - 1;
			mid = (left + right) / 2;
		}
		if (arr[mid] == n) //找到了數(shù)字,mid就是它在數(shù)組中的下標
		{	printf("找到了,下標是:%d", mid);
			break;
		}
	}
	if (left >right)//跳出循環(huán)有兩種情況:判斷其中一種為找不到的情況
		printf("找不到數(shù)字,建議你換一個");
	return 0;
}
三、排序

1、選擇法排序
就是先找最小的把它放到第一個,然后找第二小的把它放在第二個,后面的數(shù)字也是如此,到最后一個。這就相當于你有100個數(shù)字的話,你就要找99次。代碼如下:

#includeint main()
{//選擇法
	int arr[] = {13,34,65,87,67,49,27 };//定義一個一維數(shù)組來存放數(shù)據(jù)
	int p = 0;//定義一個變量來存放最小的數(shù)字的下標
	for (int j = 0; j< 7; j++)
	{int min = arr[j];
		for (int i = j+1; i< 7; i++)
		{	if (arr[i]< min)
			{		min = arr[i];
				p = i;
			}
		}
		int temp = arr[j];//將第幾小的數(shù)字放在第幾個位置上
		arr[j] = arr[p];
		arr[p] = temp;
	}
	for (int k = 0; k< 7; k++)
	{printf("%d ", arr[k]);//打印出來看看
	}
	return 0;
}
//13 27 34 49 65 67 87

2、冒泡排序
個人認為與選擇法類似,這里是把大值找到,代碼如下:

#includeint main()
{//冒泡排序
	int arr[] = {12,43,6,45,78,88,100 };
	for (int i = 0; i< 6; i++)
	{if (arr[i] >arr[i + 1])//前一個與后面一個比較,進行交換
		{	int temp = arr[i];
			arr[i + 1] = arr[i];
			arr[i] = temp;
		}
	}
	for (int j = 0; j< 7; j++)
	{printf("%d ", arr[j]);
	}
	return 0;
}

3、歸并排序
對于這個的話,采用了分而治之的思想。即把一組數(shù)據(jù)一個個分開排序,在進行合并。并且這個方法的效率也是十分高,由于目前水平還不夠,只能自己看懂但是無法講解,不過我可以推給你去看:

借鑒---白話經(jīng)典算法系列之五 歸并排序的實現(xiàn) 和這篇博客圖解排序算法(四)之歸并排序 - dreamcatcher-cx - 博客園

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


分享題目:【常用的經(jīng)典算法#C語言】-創(chuàng)新互聯(lián)
鏈接URL:http://weahome.cn/article/csjihi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部