一维数组排序(冒泡,桶,sort)笔记+例题


1、冒泡排序

示例:

#include<bits/stdc++.h>
using namespace std;
int main(){   
    int n,a[100];
    cin>>n;
    for(int i=0;i<n;i++){
	    cin>>a[i];
    }
    for(int i=0;i<n;i++){
	    for(int j=0;j<n-i-1;j++){
		    if(a[j]>a[j+1]){
				swap(a[j],a[j+1]); 
		    }
	    }
    }
    return 0;
}

2、桶排序(必须知道最大值,没有负数)

思想:

出现一个数就把一个数组下标为这个数加1

例如(去重):

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a[100],t[100]={0};//n输了几个数,a[100]是输入的数,t是桶
    cin>>n;
    for(int i=0;i<n;i++){
	    cin>>a[i];
	    t[a[i]]++;//把你当前输入的数的下标++ 
    }
    for(int i=0;i<100;i++){
	    if(t[i]!=0){
		    for(int j=0;j<t[i];j++){
			    cout<<i<<" "; 
		    }
	    }
    } 
    return 0;
}

3、sort函数排序:

C++自带的排序函数

sort(从哪里开始,从哪里结束);//默认从小到大

比如:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,a[105];
    cin>>n;
    for(int i=0;i<n;i++){
	  cin>>a[i];
    sort(a,a+n);
    for(int i=0;i<n;i++){
    	 cout<<a[i]<<" ";
	return 0;
}

从大到小排序:

1、定义函数(cmp,这个函数可以自定义排序)

用法:

sort(开始的位置,结束的位置,函数名);

2、sort(a,a+n,greater<类型>()); 

例题1:1、第一行输入n和k(k<=n<=1000),后面几行一行输入一个要比较的数(每个数都>-32504,<32504),输出n个数中第k大的数 

输入:

3 2

1 4 5

输出:

4

参考程序:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,k,a[1005];
	cin>>n>>k;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
    sort(a,a+n);
	cout<<a[k-1]; 
	return 0;
}

例题2:输入数字的个数和这些数,输出最大的数的位置

输入:

4

1 3 4 5

输出:

4

参考程序:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,a[1005],t[105]={0},ma=INT_MIN,s=0;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
		t[a[i]]++;
	}
	for(int i=0;i<n;i++){
		if(a[i]>ma){
			ma=a[i];
			s=i+1;
		}
	}
	cout<<s; 
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值