以待不时之需

1.选择排序

/*选择排序*/
#include <iostream>
using namespace std;
int main()
{
   int i,j,min,temp,a[5];
   cout<<"输入数据"<<endl;
   for(i=0;i<5;i++)
   {
     cout<<"a["<<i<<"]=";  //输入数据,存在数组中
	 cin>>a[i];
   
   }
  
   cout<<endl<<"原数为"<<endl;
   for(i=0;i<5;i++)
	   cout<<a[i]<<" ";   //输出数组,显示
   cout<<endl;
   
   for(i=0;i<5;i++)
   {
	   min=i;
      for(j=i+1;j<5;j++)
		  if(a[min]>a[j]) //排序,将最小值下标放在min,只要出现比a[min]小的就和a[min]交换,始终让a[min]储存最小值
			  min=j;
		  temp=a[i];
		  a[i]=a[min];
		  a[min]=temp;
   
   
   }
   
   cout<<endl<<"排序后数据为"<<endl;
   for(i=0;i<5;i++)
	   cout<<a[i]<<" "; //输出排序后的数组
   cout<<endl;
   
   return 0;



}

2.结合函数的选择排序

#include <iostream>
using namespace std;
int main()
{
   void select_sort(int a[],int n); //函数声明

   int i,a[5];

   cout<<"输入数组"<<endl;
  for(i=0;i<5;i++)
   {
     cout<<"a["<<i<<"]=";  //输入数据,存在数组中
	 cin>>a[i];
   
   }
  
   cout<<endl<<"原数组为"<<endl;
   for(i=0;i<5;i++)
	   cout<<a[i]<<" ";   //输出数组,显示
   cout<<endl;

   
   select_sort(a,5);  //调用函数

  
   cout<<endl<<"排序后数组为"<<endl;
     for(i=0;i<5;i++)
	   cout<<a[i]<<" ";
    cout<<endl;

   
   return 0;



}

void select_sort(int a[], int n)
{
    int i,j,temp,min;
	 for(i=0;i<4;i++)
   {
	   min=i;
      for(j=i+1;j<5;j++)
		  if(a[min]>a[j]) //排序,将最小值下标放在min,只要出现比a[min]小的就和a[min]交换,始终让a[min]储存最小值
			  min=j;
		  temp=a[i];
		  a[i]=a[min];
		  a[min]=temp;
   
   
   }
   

}

3.折半调换顺序

/*折半调换顺序*/
#include <iostream>
using namespace std;
int main()
{
  const int n=5;
  int a[n],i,temp;
  cout<<"enter array a"<<endl;
  for(i=0;i<n;i++)
	  cin>>a[i];
  cout<<"array a:"<<endl;
  for(i=0;i<n;i++)
	  cout<<a[i]<<" ";
  
  for(i=0;i<n/2;i++)
  {
    temp=a[i];
	a[i]=a[n-i-1];
	a[n-i-1]=temp;
  
  
  }

 cout<<endl<<"Now, array a:"<<endl;
 for(i=0;i<n;i++)
	 cout<<a[i]<<" ";
 cout<<endl;
 return 0;




}

4.折半查找

/*折半查找*/
#include <iostream>//注意整个程序中标志变量的使用,如flag,sign
using namespace std;
int main()
{ const int n=15;
  int i,number,top,bott,mid,loca,a[n];
  bool flag=true,sign;
  char c;
  cout<<"enter data:"<<endl;;
  cin>>a[0];
  i=1;
  
  while(i<n)
   {cin>>a[i];
    if (a[i]>=a[i-1])
      i++;
    else
      cout<<"enter this data again:";//要求输入有序数组
   }
  cout<<endl;
  
  for (i=0;i<n;i++)
    cout<<a[i]<<" ";
  cout<<endl;
  
  while(flag)
    {cout<<"input number to look for:";
     cin>>number;
     sign=false;
     top=0;            //top是查找区间的起始位置
     bott=n-1;         //bott是查找区间的最末位置
     
	 if ((number<a[0])||(number>a[n-1]))  //要查的数不在查找区间内
       loca=-1;        // 表示找不到
     
	 while ((!sign) && (top<=bott))
       {mid=(bott+top)/2;
        if (number==a[mid])
         {loca=mid;
          cout<<"Find "<<number<<", its position is "<<loca+1<<endl;//注意输出位置时下标加1
		  sign=true;
         }
        else if (number<a[mid])
         bott=mid-1;
        else
        top=mid+1;
       }
     if(!sign||loca==-1)
       cout<<number<<" has not found."<<endl;;
     
	 cout<<"continu or not(Y/N)?";
     cin>>c;
     if (c=='N'||c=='n')
	   flag=false;
    }
   return 0;
 }

5.字符数组的调换顺序

/*字符数组的调换顺序*/
#include <iostream>
using namespace std;
int main()
{ const n=10;
 int i;
 char a[n],temp;
 cout<<"please input a string:";
 for(i=0;i<n;i++)
     cin>>a[i];
 for(i=0;i<n/2;i++)
 {temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;}
 for(i=0;i<n;i++)
     cout<<a[i];
 cout<<endl;
 return 0;
}

6.字符串的调换顺序

/*字符串的调换顺序*/
#include <iostream>
#include <string>
using namespace std;
int main()
{ string a;
  int i,n;
  char temp;
  
  cout<<"please input a string:";
  cin>>a;
 
  n=a.size();
 
  for(i=0;i<n/2;i++)
  {temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;}
 
  cout<<a<<endl;
  
  return 0;
}

c++真难〒▽〒