|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
不用指针还能有简洁一点的办法么
- /*在一个有序数组中插入一个数,插入后的数组仍然有序*/
- #include <stdio.h>
- #include <time.h>
- #include "E:\Administrator\Documents\My C\My C Function\Function.c"
- void main()
- {
- int key, s, n;
- srand(time(NULL));
- n = rand() % 5 + 11; //数组的大小取值范围
- int arr[n], barr[n + 1];
- for (int i = 0; i < n; i++)
- {
- arr[i] = rand() % (n * n); //数组元素的取值范围
- }
- mppx(arr, n); //自定义的大小排序函数
- printf("请输入要插入的数:"); //开始插入数字
- scanf("%d", &key);
- for (int j = 0; j < n; j++)
- {
- barr[j] = arr[j];
- barr[j + 1] = key;
- }
- printf("重新排序\n");
- mppx(barr, n + 1);
- //找出key的位置
- arrsch(barr, n + 1, key); //自定义数组元素搜索函数
- }
复制代码
-----------------------------------------------------------------------------------------------------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-j045ujod.jku --stdout=Microsoft-MIEngine-Out-a5oqy2pv.zgo --stderr=Microsoft-MIEngine-Error-jn4wpxuw.mtz --pid=Microsoft-MIEngine-Pid-xaarnarz.uqa --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
a[0] = 15
a[1] = 22
a[2] = 23
a[3] = 52
a[4] = 54
a[5] = 59
a[6] = 60
a[7] = 66
a[8] = 85
a[9] = 89
a[10] = 101
a[11] = 130
请输入要插入的数:96
重新排序
a[0] = 15
a[1] = 22
a[2] = 23
a[3] = 52
a[4] = 54
a[5] = 59
a[6] = 60
a[7] = 66
a[8] = 85
a[9] = 89
a[10] = 96
a[11] = 101
a[12] = 130
被插入数字的位置是:
arr[10] = 96
E:\Administrator\Documents\My C>
==================================================================================
- /*冒泡排序函数*/
- void mppx(int a[], int s)
- {
- int i, j, t;
- for (i = 0; i < s; i++)
- {
- for (j = 0; j < (s - 1); j++)
- {
- if (a[j] >= a[j + 1])
- {
- t = a[j];
- a[j] = a[j + 1];
- a[j + 1] = t;
- }
- }
- }
- for (i = 0; i < s; i++)
- {
- printf("a[%d] = %d\n", i, a[i]);
- }
- }
- /*数组搜索函数*/
- void arrsch(int arr[] , int n, int key)
- {
- for (int i = 0; i < n; i++)
- {
- if (key == arr[i])
- {
- printf("被插入数字的位置是:\narr[%d] = %d\n", i, key);/*返回key在数组内的位置*/
- break;
- }
- }
- }
复制代码
忘了arrsch了
- /*在一个有序数组中插入一个数,插入后的数组仍然有序*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <string.h>
- /*冒泡排序函数*/
- void mppx(int data[], size_t size)
- {
- for(size_t i = 0; i < size; ++i)
- {
- for(size_t j = i; j < size; ++j)
- {
- if(data[i] > data[j])
- {
- int temp = data[i];
- data[i] = data[j];
- data[j] = temp;
- }
- }
- }
- }
- /*数组搜索函数*/
- int arrsch(int data[], size_t size, int key)
- {
- for(size_t i = 0; i < size; ++i)
- {
- if(data[i] == key)
- return i;
- }
- return -1;
- }
- void print(int data[], size_t size)
- {
- for(size_t i = 0; i < size; ++i)
- printf("%d ", data[i]);
- printf("\n");
- }
- int main(void)
- {
- srand(time(NULL));
- size_t size = rand() % 5 + 11;
- int arr[size], barr[size + 1];
- for(size_t i = 0; i < size; ++i)
- arr[i] = rand() % (size * size);
- printf("排序前:"); print(arr, size);
- mppx(arr, size);
- printf("排序后:"); print(arr, size);
- int key;
- printf("请输入要插入的数:");
- scanf("%d", &key);
- memcpy(barr, arr, size * sizeof(arr[0]));
- barr[size] = key;
- printf("排序前:"); print(barr, size + 1);
- mppx(barr, size + 1);
- printf("排序后:"); print(barr, size + 1);
- int index = arrsch(barr, size + 1, key);
- if(index >= 0)
- printf("被插入数字的位置是:\nbarr[%d] = %d\n", index, key);
- return 0;
- }
复制代码
|
|