一
#include<iostream>
using namespace std;
void swap(int &x,int &y)
{int mid;
mid=x;x=y;y=mid;}
void sequence(int *b,int left,int right){
for(int j=1;j<=right-left;j++){
for(int i=left;i<right-1;i++){
if(b[i]>b[i+1]){
swap(b[i],b[i+1]);}
}
}
}
int check(int *a,int left,int right,int x){
int min_index=left;
for(int i=left;i<=right;i++)
{int min_difference=100;
if((a[i]>x)&&((a[i]-x)<min_difference)){
min_index=i;}
}
return min_index;
}
void next_array(int *a,int n){
int length=n;
while(a[n-1]<a[n-2])
{n=n-1;}
int min=check(a,n-1,length-1,a[n-2]);
swap(a[n-2],a[min]);
sequence(a,n-1,length-1);
for(int i=0;i<length;i++){
cout<<a[i];}
cout<<endl;
}
int jiecheng(int y){
int ans=1;
for(int i=1;i<=y;i++)ans*=i;
return ans;
}
int main(){
int x;
cin>>x;
int *p=new int[x];
for(int i=1;i<=x;i++){
p[i-1]=i;}
for(int j=0;j<x;j++){
cout<<p[j];}
cout<<endl;
for(int k=1;k<jiecheng(x);k++)
next_array(p,x);
return 0;
}
自己寫的一個全排列字典排序,不知道哪里出了問題,只輸出了部分全排列。
二
#include<iostream>
using namespace std;
void swap(int &x,int &y)
{int mid;
mid=x;x=y;y=mid;}
void quicksort(int *a,int left,int right){
int key=a[left];
int i=left;int j=right;
while(i!=j){
while(a[j]>key){
j--;}
swap(a[j],a[i]);
while(a[i]<key){
i++;}
swap(a[j],a[i]);
}
quicksort(a,left,i-1);quicksort(a,i+1,right);
}
int main(){
int length;
cin>>length;
int *p=new int[length];
for(int i=0;i<length;i++){
cin>>p[i];}
quicksort(p,0,length-1);
for(int j=0;j<length;j++){
cout<<p[j];}
return 0;
}
快速排序,輸出不了結果,不知道哪里有問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/179110.html
標籤:C++ 語言
上一篇:分椰子
下一篇:Java撰寫掃地機器人程式
