一维数组
- 找最大值 Getmax(int a[],int n)
- 选择排序 selectsort(int a[],int n)
- 冒泡排序 bubblesort(int a[],int n)
- 折半查找某元素的位置(二分法查找) binarysearch(int a[],int n)
找最大值
int Getmax(int a[], int n)
{
int pos, temp;
pos = 0;
for (int i = 1; i < n; i++)
if (a[i] > a[pos])
pos = i;
return a[pos];
}
选择排序
void selectsort(int a[], int n)
{
int pos, temp;
for (int trip = 0; trip < n; trip++)
{
pos = trip;
for (int i = trip + 1; i < n; i++) //注意要是i=trip+1
if (a[i] > a[pos])
pos = i; //此循环为找出最大的值,并标记位置
temp = a[trip];
a[trip] = a[pos];
a[pos] = temp; //将最大值往最左移
} //此循环为将数组从大到小排序
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
}
冒泡排序
void bubblesort(int a[], int n)
{
int trip, i, temp;
bool noswap = true;
for (trip = 1; trip <= n - 1 && noswap; trip++)
{
noswap = false;
for(i=0;i<n-trip;i++)
if (a[i + 1] > a[i])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = a[i];
noswap = true;
}
}
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
}
折半查找某元素的位置(二分法查找)
必须是有序数组
int banarysearch(int a[], int n, int x) //数组从大到小排列
{
int bot, top, mid;
bot = 0;
top = n - 1;
while (bot < top)
{
mid = (top + bot) / 2;
if (x > a[mid])
{
top = mid - 1;
} //若x > a[mid],x在右半边
else if (x < a[mid])
{
bot = mid + 1;
} //若x < a[mid],x在左半边
else
return mid;
}
if (top < bot)
return -1;
else
return mid;
}
总代码
#include <iostream>
#include <iomanip>
using namespace std;
void input(int a[], int n)
{
for (int i = 0; i < n; i++)
cin >> a[i];
}
void output(int a[], int n)
{
for (int i = 0; i < n; i++)
cout << a[i]<<" ";
cout << endl;
}
int Getmax(int a[], int n)
{
int pos;
pos = 0;
for (int i = 1; i < n; i++)
if (a[i] > a[pos])
pos = i;
return a[pos];
}
void selectsort(int a[], int n)
{
int pos, temp;
for (int trip = 0; trip < n; trip++)
{
pos = trip;
for (int i = trip + 1; i < n; i++)
if (a[i] > a[pos])
pos = i;
temp = a[trip];
a[trip] = a[pos];
a[pos] = temp;
}
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
}
void bubblesort(int a[], int n)
{
int trip, i, temp;
bool noswap = true;
for (trip = 1; trip <= n - 1 && noswap; trip++)
{
noswap = false;
for(i=0;i<n-trip;i++)
if (a[i + 1] > a[i]) {
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = a[i];
noswap = true;
}
}
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
}
int banarysearch(int a[], int n, int x) //数组从大到小排列
{
int bot, top, mid;
bot = 0;
top = n - 1;
while (bot < top)
{
mid = (top + bot) / 2;
if (x > a[mid])
{
top = mid - 1;
} //若x > a[mid],x在右半边
else if (x < a[mid])
{
bot = mid + 1;
} //若x < a[mid],x在左半边
else
return mid;
}
if (top < bot)
return -1;
else
return mid;
}
int main()
{
int a[10], n,x;
cout << "元素个数:";
cin >> n;
cout << "查找元素:";
cin >> x;
input(a, n);
output(a, n);
cout<<"最大值"<<Getmax(a, n)<<endl;
cout << "排序:"<<endl;
selectsort(a, n);
bubblesort(a, n);
cout <<"查找元素的位置:"<< banarysearch(a, n, x);
cout << endl;
system("pause");
return 0;
}