【数据的产生、排序、插入和查询和删除】
1、利用随机函数产生10个20以内的整数
(a)按升序输出排序后的结果(排序可采用冒泡或选择排序方法)
(b) 从键盘输入一个数,将其插入到排序后的数组中,插入后的数组依然有序,并输出新数组
(c)从键盘输入某数,查找该数是否存在数组中,若在,则输出该数在数组中的位置,否则输出NO FIND!
(d) 从前面排好序的数组中删除某一个数,并输出排序后的数据
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
//数据的产生、排序、插入和查询
void BuSort(int* list, int length) //排序
{
for (int i = 0; i < length-1; i++)
{
for (int j = 0; j < length - 1 - i; j++)
{
if (list[j + 1] < list[j])
{
int temp = 0;
temp = list[j + 1];
list[j+1] = list[j];
list[j] = temp;
}
}
}
}
void Insert(int* list, int n)//插入
{
int flag=0;
for (int i = 0; i < 10; i++)
{
if (list[i] < n)//寻找到比插入数小的最大数的下标
{
flag = i+1;//插入的位置在比插入数小的最大数的后一位
}
}
for (int i = 11; i > flag ; i--)//从下标开始往后移动一位
{
list[i] = list[i-1];
}
list[flag] = n;
}
void Del(int* list, int n)//删除
{
int flag=0;
for (int i = 0; i < 11; i++)
{
if (list[i] == n)//寻找到插入数的下标
{
flag = i;
}
}
for (int i = flag; i < 11; i++)//从下标开始往前移动一位
{
list[i] = list[i + 1];
}
}
void Search(int* list, int n)
{
int li[11] = {}, j = 0;
for (int i = 0; i < 11; i++)
{
if (list[i] == n)
{
cout << i << " ";
j = 1;
}
}
if (j == 0)
{
cout<<"NO FIND"<<endl;
}
}
int main()
{
int list[20] = {};
int in = 0,sn=0,dn=0;
srand(time(NULL));
for (int i = 0; i < 10; i++)//产生
{
list[i] = rand() % 20;
}
for (int i = 0; i < 10; i++)
{
cout << list[i] << " ";
}
cout << endl << "排序后:";
BuSort(list,10);
for (int i = 0; i < 10; i++)
{
cout<<list[i] << " ";
}
cout << endl;
cout << "请输入要插入数组的数:" << endl;
cin >> in;
Insert(list, in);
for (int i = 0; i < 11; i++)
{
cout << list[i] << " ";
}
cout << endl;
cout << "请输入要在数组中查询的数:" << endl;
cin >> sn;
Search(list, sn);
cout << endl;
cout << "请输入要删除的数:";
cin >> dn;
Del(list, dn);
for (int i = 0; i < 10; i++)
{
cout << list[i] << " ";
}
return 0;
}