求第k趟冒泡排序的结果

冒泡排序

  • 基本思想:重复地走访要排序的元素列,依次比较相邻的两个元素,如果顺序错误就交换它们,直到没有元素需要交换。
  • 时间复杂度:最坏和平均情况都是O(n²)。
  • 空间复杂度:O(1),属于原地排序。
  • 稳定性:稳定。

求第k趟冒泡排序的结果

void solve(){
	int n,k;
	cin>>n>>k;
	vector<int> v(n);
	for(int i=0;i<n;i++){
		cin>>v[i];}
	if(k>n-1){//n个元素最多需要n-1趟排序
		sort(v.begin(),v.end());
		for(int i=0;i<n;i++){
				cout<<v[i]<<" ";
			}}
	for(int i=0;i<n-1;i++){//n个元素最多需要n-1趟排序 即0至n-2
		for(int j=0;j<n-1-i;j++){//-i是因为已经有i个元素在最终位置 不需要再加入比较
			if(v[j]>v[j+1]){
				swap(v[j],v[j+1]);}
		}
		if(i+1==k){
			for(int i=0;i<n;i++){
				cout<<v[i]<<" ";
			}}
	}


}

输入:
6 1
64 34 25 12 22 90
输出
34 25 12 22 64 90

输入:
6 2
64 34 25 12 22 90
输出
25 12 22 34 64 90

输入:
6 8
64 34 25 12 22 90
输出
12 22 25 34 64 90

你可能感兴趣的:(算法,算法,数据结构,排序算法)