数组算法
选择法排序
#define N 10
#include<iostream>
using namespace std;
int main()
{
int a[N], i, j, imax;
cout << "原一维数组:";
for (i = 0; i < N; i++)
{
a[i] = rand() % 101;
cout << a[i] << '\t';
}
for (i = 0; i < N - 1; i++)
{
imax = i;
for (j = i + 1; j < N; j++)
{
if (a[j] > a[imax])
{
imax = j;
}
}
int temp;
temp = a[imax];
a[imax] = a[i];
a[i] = temp;
}
cout << endl;
cout << "排序后(大到小)的一位数组:" << '\n';
for (i = 0; i < N; i++)
{
cout << a[i] << '\t';
}
return 0;
}
冒泡法排序
#define N 10
#include<iostream>
using namespace std;
int main()
{
int a[N], i, j, temp;
cout << "原一维数组:";
for (i = 0; i < N; i++)
{
a[i] = rand() % 101;
cout << a[i] << '\t';
}
for (i = 0; i < N - 1; i++)
{
for(j=0;j<N-1-i;j++)
if (a[j+1] > a[j])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
cout << endl;
cout << "排序后(大到小)的一位数组:" << '\n';
for (i = 0; i < N; i++)
{
cout << a[i] << '\t';
}
return 0;
}
插入与删除
#define N 10
#include<iostream>
using namespace std;
int main()
{
int a[N], i, k, x, n;
cout << "输入数组现有元素的个数:";
cin >> n;
cout << "请输入数组:" << '\n';
for (i = 0; i < n; i++)
{
cin >> a[i];
}
cout << "输入待插入的数据:";
cin >> x;
for (i = 0; i < n; i++)
{
if (x < a[i])
break;
}
k = i;
for (i = n-1; i >=k; i--)
{
a[i+1] = a[i];
}
a[k] = x;
cout << "新数组:" << '\n';
for (i = 0; i < n + 1; i++)
{
cout << a[i] << '\t';
}
return 0;
}
#define N 10
#include<iostream>
using namespace std;
int main()
{
int a[N], i, k, x, n;
cout << "输入数组现有元素的个数:";
cin >> n;
cout << "请输入数组:" << '\n';
for (i = 0; i < n; i++)
{
cin >> a[i];
}
cout << "输入待删除的数据:";
cin >> x;
for (i = 0; i < n; i++)
{
if (x == a[i])
break;
}
k = i;
if (i == n)
{
cout << "未找到删除位置!" << '\n';
}
else
{
for (i = k; i < n - 1; i++)
{
a[i] = a[i + 1];
}
cout << "新数组:" << '\n';
for (i = 0; i < n - 1; i++)
{
cout << a[i] << '\t';
}
}
return 0;
}
二分法查找(有序数组)
#define N 10
#include<iostream>
using namespace std;
int main()
{
int a[N], i, n,x;
cout << "输入数组现有元素的个数:";
cin >> n;
cout << "请输入数组:" << '\n';
for (i = 0; i < n; i++)
{
cin >> a[i];
}
cout << "输入查找元素:";
cin >> x;
int low = 0, high = n - 1, mid;
while (low <= high)
{
mid = (low + high) / 2;
if (x == a[mid])
{
break;
}
else if (x > a[mid])
{
low = mid + 1;
}
else
high = mid - 1;
}
if (low > high)
{
cout << "未找到查找元素!" << endl;
}
else
cout << "查找元素下标:" << mid << endl;
return 0;
}