怎麼在一組數組中插入一個數?
有n個整數,已經按照從小到大順序排列好,現在另外給一個整數m,請將該數插入到序列中,並使新的序列仍然有序。第二題誰能用c語言數組方法解決????
T2有很多方法
方法一
最懶的方法:把m放到最後面,排序(當然使用STL-sort)啦,輸出。
嗯……什麼?不會STL?好吧 看第二種吧#include&
#include&
int array[102];
int n;//乾脆就不要變數m了,直接放到最後面
bool flag=1;//判斷是不是已經輸入了
int main()
{
scanf("%d",n);
for(int i=0;i&
優點:方便
缺點:效率低
方法二
最懶的方法的高效版:把m放到最後,由於前n個數字都是有序的,那就執行冒泡排序的一部分(第一個週期的交換),輸出。
自己做一個swap(為毛c啥函數都沒有???)
#include&
#include&
int array[102];
int n;//乾脆就不要變數m了,直接放到最後面
bool flag=1;//判斷是不是已經輸入了
void swap(int x,int y)
{
int t=x;x=y;y=t;
}
int main()
{
scanf("%d",n);
for(int i=0;i&=0;i--) if(array[i]&>array[i+1]) swap(array[i],array[i+1]);
for(int i=0;i&
方法三
最高效的方法
直接輸出,但是在適合的時機(位置)輸出m(array[n])
#include&
int array[102];
int n;//乾脆就不要變數m了,直接放到最後面
bool flag=1;//判斷是不是已經輸入了
int main()
{
scanf("%d",n);
for(int i=0;i&=array[n]) printf("%d ",array[n]),flag=0;
printf("%d ",array[i]);
}
return 0;
}
O(n)的喲(^U^)ノ~YO
將數組裡的數從後往前依次和m比,比m大的往後移一位,知道遇到比m小的就把m放那,自己畫個圖理解一下。
要插入的整數與數組已排列好的數比較一下,要插入的數在第幾,要重新申請數組,
將原來的數組和數拷貝到新數組。
基本的演算法題目
懶得寫
CSDN標準回答:請自主認真做好自己的作業。
已經懶得上百度找答案了嗎???
推薦閱讀: