前言:
👏作者簡介:我是笑霸final,一名熱愛技術(shù)的在校學(xué)生。
📝個人主頁:個人主頁1 || 笑霸final的主頁2
📕系列專欄:《數(shù)據(jù)結(jié)構(gòu)與算法》
📧如果文章知識點有錯誤的地方,請指正!和大家一起學(xué)習(xí),一起進步👀
🔥如果感覺博主的文章還不錯的話,👍點贊👍 + 👀關(guān)注👀 + 🤏收藏🤏創(chuàng)新互聯(lián)建站是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的成都天府聯(lián)通服務(wù)器托管服務(wù)
給你一個n代表有n個數(shù)字,給出這n個數(shù)字,然后你需要使用冒泡排序?qū)⑦@些數(shù)字從小到大排好。
輸入描述:
第一行輸入一個n,代表有n個數(shù)字
第二行輸入n個數(shù)
輸出描述:
輸出排序好后的n個數(shù)
示例1
輸入:
4
4 3 2 1
輸出:
1 2 3 4
代碼
#include#includeusing namespace std;
int main(){int n=0;
cin>>n;
if(n<=0) return 0;
vectornums(n);
for(int i=0;icin >>nums[i];
}
//冒泡
for(int i=n-1;i>0;i--){for(int j=0;jif(nums[j]>nums[j+1]){nums[j] =nums[j] ^ nums[j+1];
nums[j+1]=nums[j] ^ nums[j+1];
nums[j] =nums[j] ^ nums[j+1];
}
}
}
//輸出
for(int i=0;icout<< nums[i]<<" ";
}
return 0;
}
隨堂習(xí)題-排序(選擇排序)給你一個n代表有n個數(shù)字,然后你需要使用選擇排序?qū)⑦@些數(shù)字從小到大排好。
輸入描述:
第一行輸入一個n,代表有n個數(shù)字
第二行輸入n個數(shù)
輸出描述:
輸出排序好后的n個數(shù)
示例1
輸入:
4
4 3 2 1
輸出:
1 2 3 4
代碼
#include#includeusing namespace std;
int main(){int n=0;
cin>>n;
if(n<=0) return 0;
vectornums(n);
for(int i=0;icin >>nums[i];
}
//選擇排序
for(int i=0;iint vauleMinIndex=i;
for(int j=i+1;jif(nums[vauleMinIndex]>=nums[j]){vauleMinIndex=j;
}
}
swap(nums[i], nums[vauleMinIndex]);
}
//輸出
for(int i=0;icout<< nums[i]<<" ";
}
return 0;
}
隨堂習(xí)題-排序(插入排序)給你一個n代表有n個數(shù)字,然后你需要使用插入排序?qū)⑦@些數(shù)字從小到大排好。
輸入描述:
第一行輸入一個n,代表有n個數(shù)字
第二行輸入n個數(shù)
輸出描述:
輸出排序好后的n個數(shù)
示例1
輸入:
4
4 3 2 1
輸出:
1 2 3 4
代碼
#include#includeusing namespace std;
int main(){int n=0;
cin>>n;
if(n<=0) return 0;
vectornums(n);
for(int i=0;icin >>nums[i];
}
//插入排序
for(int i=0;ifor(int j=1;jif(nums[j]swap(nums[j],nums[j-1]);
}
}
}
//輸出
for(int i=0;icout<< nums[i]<<" ";
}
return 0;
}
隨堂習(xí)題-二分查找某數(shù)給你一個n代表有一個長度為n的有序數(shù)組,然后給你一個k,你需要判斷這個k是否在數(shù)組里面,
如果存在就返回這個數(shù)從左往右第一次出現(xiàn)位置的下標(biāo),如果不存在輸出-1。
輸入描述:
第一行輸入一個n,k,其中n代表有n個數(shù)字,k代表你需要查找的元素
第二行輸入n個數(shù)
輸出描述:
如果在數(shù)組里面找到了k,輸出k所在的下標(biāo)(注:如果數(shù)組中k出現(xiàn)了多次,請輸出最小的下標(biāo)!),如果k不在,就輸出-1
示例1
輸入:
7 0
0 1 2 3 4 5 6
輸出:
0
代碼
#include#includeusing namespace std;
int main(){int n=0,k=-1,tep=-1;
cin>>n;cin>>k;
if(n<=0) return 0;
vectornums(n);
for(int i=0;i>nums[i];
for(int i=0;i//插入排序
for(int j=1;jif(nums[j]//交換兩個數(shù)
nums[j] = nums[j] ^ nums[j-1];
nums[j-1]= nums[j] ^ nums[j-1];
nums[j] = nums[j] ^ nums[j-1];
}
}
}
//二分查找
int l=0,r=n-1;
while(l<= r){int mid = l + ((r -l ) >>1);
if(nums[mid]< k) l=mid+1;
if(nums[mid] >k) r=mid-1;
if(nums[mid] == k){//查重
if(nums[mid-1]< nums[mid]){tep = mid;
}
r= mid-1;
}
}
cout<
隨堂習(xí)題-查找某個位置你需要輸入一個n,一個數(shù)k,然后輸入一個長度為n個大小的數(shù)組arr,然后你需要在arr上找滿足>=K的最左位置,并且輸出這個位置,如果不存在這個位置就輸出-1。
輸入描述:
第一行輸入一個n,k
第二行輸入長度為n個大小的數(shù)組arr
輸出描述:
輸出>=K的最左位置
示例1
輸入:
5 1
0 0 2 4 6
輸出:
2
代碼
#include#includeusing namespace std;
int main(){int n=0,k=-1,tep=-1;
cin>>n;cin>>k;
if(n<=0) return 0;
vectornums(n);
for(int i=0;i>nums[i];
for(int i=0;i//插入排序
for(int j=1;jif(nums[j]//交換兩個數(shù)
nums[j] = nums[j] ^ nums[j-1];
nums[j-1]= nums[j] ^ nums[j-1];
nums[j] = nums[j] ^ nums[j-1];
}
}
}
//二分查找
int l=0,r=n-1;
while(l<= r){int mid = l + ((r -l ) >>1);
if(nums[mid]< k) l=mid+1;
if(nums[mid] >k){r=mid-1;
tep=mid;
}
if(nums[mid] == k){tep=mid;
//查重
if(nums[mid-1] >nums[mid]){tep = mid;
}
r= mid-1;
}
}
cout<
隨堂習(xí)題-局部最小值問題定義局部最小的概念。arr長度為1時,arr[0]是局部最小。arr的長度為N(N>1)時,如果arr[0]< arr[1],那么arr[0]是局部最小;
如果arr[N-1] 是局部最小。給定無序數(shù)組arr,已知arr中任意兩個相鄰的數(shù)都不相等,只需要返回arr中任意一個局部最小出現(xiàn)的位置即可,如果不存在這個位置就輸出-1。
輸入描述:
第一行輸入一個n代表下面需要輸入n個數(shù)
第二行輸入n個元素,任意兩個相鄰的數(shù)都不相等
輸出描述:
返回arr中任意一個局部最小出現(xiàn)的位置
示例1
輸入:
6
6 2 3 1 5 6
輸出:
1
代碼
#include#includeusing namespace std;
int main(){int n=0;
cin>>n;
if(n<=0) { cout<< -1<< endl;
return 0;
}
vectornums(n);
for(int i=0;i>nums[i];
//開頭局部最小
if(n==1 || nums[0]< nums[1]){cout<< 0<< endl;
return 0;
}
if(n==2 && nums[0]>nums[1]){cout<< 1<< endl;
return 0;
}
//末尾局部最小
if (nums[n-1]< nums[n-2]){cout<< n - 1<< endl;
return 0;
}
//二分查找
int l=0,r=n-1;
while(l<= r){int mid = l + ((r -l ) >>1);
if(nums[mid]< nums[mid-1] && nums[mid]cout<< mid<< endl;
return 0;
}
else if( nums[mid]//說明mid+1也小于于mid 所以局部最小值應(yīng)該在右邊
l=mid+1;
}
else r=mid-1;
}
cout<<-1;
return 0;
}
隨堂習(xí)題-一個數(shù)出現(xiàn)奇數(shù)次一個數(shù)組中有一種數(shù)出現(xiàn)了奇數(shù)次,其他數(shù)都出現(xiàn)了偶數(shù)次,怎么找到這一個數(shù)?
輸入描述:
第一行輸入一個n代表,有個n個長度大小的數(shù)組
第二行輸入一個長度為n的數(shù)組
輸出描述:
輸出這個數(shù)組中出現(xiàn)奇數(shù)次的數(shù)
示例1
輸入:
5
1 1 1 2 1
輸出:
2
代碼
#includeusing namespace std;
int main(){ int n=0;
cin>>n;
if(n<=0){ cout<<-1;
return 0;
}
vectorarr(n);
for(int i=0;i>arr[i];
int x=0;
for(int i=0;i x=x^arr[i];
}
cout<< x<
隨堂習(xí)題-兩個數(shù)出現(xiàn)奇數(shù)次給定一個數(shù)字arr,其中只有兩個數(shù)字出現(xiàn)了奇數(shù)次,其它數(shù)字都出現(xiàn)了偶數(shù)次,按照從小到大順序輸出這兩個數(shù)。
輸入描述:
第一行輸入一個n,
第二行輸入n個數(shù)
輸出描述:
輸出出現(xiàn)奇數(shù)次的兩個數(shù),按照從小到大的順序。
示例1
輸入:
4
1 1 2 3
輸出:
2 3
代碼
#includeusing namespace std;
int main(){ int n=0;
cin>>n;
if(n<=0){ cout<<-1;
return 0;
}
vectorarr(n);
for(int i=0;i>arr[i];
//如果所有的數(shù)異或運算 最后的值一定是出現(xiàn)奇數(shù)次的兩個數(shù)的異或 并且一定不為0
//例如1111 和 1000 他們異或 為 0111
int eor=0;
for(int i=0;i //把和rightOne位置同為1的數(shù)異或 那么得到的數(shù)就是其中的一個答案
if( (rightOne & arr[i]) != 0){onlyOne ^= arr[i];
}
}
int y= eor^onlyOne;
if(onlyOne cout<< onlyOne<<" "<< y;
}else{ cout<< y<<" "<< onlyOne;
}
return 0;
}
隨堂習(xí)題-(遞歸)數(shù)組中的大值用遞歸方法找一個數(shù)組中的大值
輸入描述:
第一行輸入一個n,代表數(shù)組的長度
第二行,輸入n個數(shù)
輸出描述:
輸出這個數(shù)組中的大值
示例1
輸入:
5
1 2 3 4 5
輸出:
5
代碼
#include#includeusing namespace std;
//遞歸
int myMax(int arr[],int l,int r){if(l==r){return arr[l];
}
int mid=l+((r-l)>>1);
int leftmax=myMax(arr,l,mid);
int rightmax=myMax(arr,mid+1,r);
return leftmax >rightmax ? leftmax : rightmax;
}
int main(){int n;
cin>>n ;
if(n<=0) return 0;
int *arr = new int[n];
//vectorarr(n);
for(int i = 0 ;i< n ; i++){cin>>arr[i];
}
cout<< myMax(arr,0,n-1);
return 0;
}
注意
上述例題來自??途W(wǎng) https://www.nowcoder.com/
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁標(biāo)題:第一周練習(xí)——認(rèn)識復(fù)雜度和簡單排序算法-創(chuàng)新互聯(lián)
分享鏈接:http://www.2m8n56k.cn/article24/dpepje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、微信小程序、App開發(fā)、網(wǎng)站內(nèi)鏈、關(guān)鍵詞優(yōu)化、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容