step3 . day8数据结构之算法
關(guān)于算法,理解的不算很深刻,了解到好的算法不僅在時(shí)間的節(jié)約和空間的利用上,都最求最優(yōu)的代碼。
比較經(jīng)典的算法就是各種排序、查找了,下面貼兩個(gè)理解比較深的優(yōu)化算法(二分查找在順序二叉樹(shù)那里寫過(guò)了,不再重復(fù),哈希查找的重點(diǎn)在于映射方法和沖突的解決)
1.上臺(tái)階問(wèn)題,100個(gè)臺(tái)階,可以走1個(gè)2個(gè)和5個(gè),有多少總方案,我自己優(yōu)化的話,只能從暴力窮舉→有限窮舉→去除無(wú)效窮舉這幾個(gè)方向優(yōu)化,不過(guò)最終的代碼給了我很多的啟發(fā),找規(guī)律后再寫代碼會(huì)好的多,代碼如下
#include<stdio.h>
int fun1(){
int count = 0;
int i,j,k;
for(i=0;i<=100;i++)
for(j=0;j<=100;j++)
for(k=0;k<=100;k++){
if(i+2*j+5*k==100)
count++;
}
printf("count in fun1 = %d\n",count);
printf("fun1循環(huán) %d 次\n",i*j*k);
}
int fun2(){
int count = 0;
int i,j,k;
for(i=0;i<=20;i++)
for(j=0;j<=50;j++)
for(k=0;k<=100;k++){
if(5*i+2*j+k==100)
count++;
}
printf("count in fun2 = %d\n",count);
printf("fun2循環(huán) %d 次\n",i*j*k);
}
int fun3(){
int count = 0;
int i,j;
for(i=0;i<=20;i++)
for(j=0;j<=50;j++)
{ if(5*i+2*j<=100)
count++;
}
printf("count in fun3 = %d\n",count);
printf("fun3循環(huán) %d 次\n",i*j);
}
int fun4(){
int count = 0;
int i;
for(i=0;i<=100;i+=5)
count+=(100-i+2)/2;
printf("count in fun4 = %d\n",count);
printf("fun4循環(huán) %d 次\n",i/5);
}
1.快速排序法:思想是將第一個(gè)數(shù)作為標(biāo)的,從前和從后分別找大于和小于的書(shū),區(qū)分放入位置,已到達(dá)將標(biāo)的放到中間,兩邊的總體大小已經(jīng)排序OK,進(jìn)而遞歸調(diào)用繼續(xù)排序。
#include<stdio.h>
int bubblesort(int a[],int size){
int i,j,k=0;
for(i=0;i<size-1;i++){
for(j=0;j<size-i-1;j++){
if(a[j]>a[j+1]){
a[j] += a[j+1];
a[j+1] = a[j]-a[j+1];
a[j] = a[j]-a[j+1];
k++;
}
}
}
return k;
}
void show(int a[],int size){
int i;
for(i=0;i<size;i++){
printf("%d ",a[i]);
}
printf("\n");
}
static count =0;
int quicksort(int a[],int lift,int right){
if(lift>=right)
return -1;
int i = lift;
int j = right;
int temp = a[i];
while(i<j){
while(i<j && temp <= a[j]){
j--;
count++;
}
a[i]=a[j];
printf("________________\n");
show(a,8);
while(i<j && a[i] <= temp)
{ i++;
count++;
}
a[j]=a[i];
printf("________________\n");
show(a,8);
}
a[i]=temp;
printf("____________________________\n");
show(a,8);
quicksort(a,lift,i-1);
quicksort(a,i+1,right);
return count;
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/huiji12321/p/11279458.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的step3 . day8数据结构之算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ASP.NET MVC 3.0学习系列文
- 下一篇: might用法