第三章:查詢與排序(下)----------- 3.28 特殊排序(利用sort函式)

Curtis_發表於2019-03-12

特殊排序:

輸入一個正整數陣列,把陣列中的所有元素拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。

例如:輸入陣列{3,32,321},則這3個數字能拼接成的最小數字為:321323

 利用sort()函式。

程式碼:

 

#include<iostream>
#include<algorithm>
//#include<cstring>
using namespace std;

string toString(int a)
{
	string ans;
	while(a)
	{
		ans+=('0'+a%10);
		a/=10;
	}
	reverse(ans.begin(),ans.end());
	return ans;
}


bool compare(int a,int b)
{
	string ab=toString(a)+toString(b);
	string ba=toString(b)+toString(a);
	
	return ab<ba;
	//return ab.compare(ba);  //仍有疑惑 
}

int main()
{
	int arr[]={3,32,321,31,1,2};
	int len=6;
		
	sort(arr,arr+len,compare);
	for(int i=0;i<len;i++)
	{
		cout<<arr[i];
	}
		
	return 0;
} 

結果:

參考:https://blog.csdn.net/qq_31217423/article/details/76375336

相關文章