當前位置:首頁 » 編程語言 » c語言插入法

c語言插入法

發布時間: 2022-07-15 10:07:01

c語言編寫程序,用插入法將10個數進行從大到小排序

#include<stdio.h>

void main()

{

int a[11],n,i,j;

printf("Please Input 10 Numbers: ");

for(i=1;i<=10;i++)

scanf("%d",&a[i]);

for(i=2;i<=10;i++)

{

a[0]=a[i];

for(j=i-1;a[j]>a[0];j--)

a[j+1]=a[j];

a[j+1]=a[0];

}

for(i=1;i<=10;i++)

printf("%d ",a[i]);

printf(" ");

}



② c語言插入法排序的演算法步驟

演算法描述
一般來說,插入排序都採用in-place在數組上實現。具體演算法描述如下:
從第一個元素開始,該元素可以認為已經被排序
取出下一個元素,在已經排序的元素序列中從後向前掃描
如果該元素(已排序)大於新元素,將該元素移到下一位置
重復步驟3,直到找到已排序的元素小於或者等於新元素的位置
將新元素插入到該位置後
重復步驟2~5
如果比較操作的代價比交換操作大的話,可以採用二分查找法來減少比較操作的數目。該演算法可以認為是插入排序的一個變種,稱為二分查找排序。
范常式式碼
void insertion_sort(int array[], int first, int last)
{
int i,j;
int temp;
for (i = first+1; i<=last;i++)
{
temp = array[i];
j=i-1;

while((j>=first) && (array[j] > temp))
{
array[j+1] = array[j];
j--;
}
array[j+1] = temp;
}
}

③ 利用隨機函數產生100個1000以內的整數,存放在數組中。c語言的插入法

利用函數在產生的過程中是不能夠進行整數的,因為它們的c語言插入法比較高。

④ c語言數據結構單鏈表(頭插入法)

head=(LNode
*)malloc(sizeof(LNode));
這一句不要,沒啥用處,除非你head指向的節點也就是第一個節點的data不需要數據
head->next=NULL;這里修改為head=NULL;
讓head先指向NULL,也就是沒有節點
其實這個可以不要,再主函數中,先讓鏈表是空鏈表即可(即讓head=NULL)
head->data=data;
head->next=p->next;
head->next=p;
關鍵在這里
你仔細考慮一下,一般來說頭插法的head只是一個指針,不要對head指向的那個節點操作,對p操作完成後,讓head指過去即可
所以修改為
p->data=data;
//賦值過去,因為你現在申請了p的內存空間
p->next=head;
//把head指向的那個節點連接到p的後面,這樣完成頭插
//
這是head沒有用了,p成為鏈表的頭指針
head=p;
//head再指向這個鏈表的頭部,也就是p指向的節點,為下一次循環做准備
head=Createlist(head);//鏈表初始化
主函數中這樣不太好,建議不要重名

⑤ 怎樣用C語言程序實現插入法排序與起泡法演算法排序

直接插入排序的基本思想是:
當插入第i
(i≥
1)
個對象時,前面的V[0],
V[1],
…,
v[i-1]已經排好序。這時,用v[i]的關鍵碼與v[i-1],
v[i-2],
…的關鍵碼順序進行比較,找到插入位置即將v[i]插入,原來位置上的對象向後順移。
用c實現的插入排序法,先輸入10個數,然後利用插入排序法進行排序,將結果輸出。
#include
"stdio.h"
#include
"conio.h"
main()
{
int
a[10],r[11];
int
*p;
int
i,j;
for(i=0;i<10;i++)
{
p=&a[i];
printf("please
scan
the
NO:
%d\n",i);
scanf("%d",p);
r[i+1]=a[i];
}
r[0]=1;
for(i=2;i<=10;i++)
{
r[0]=r[i];
j=i-1;
while(r[j]>r[0])
{
r[j+1]=r[j];
j--;
}
r[j+1]=r[0];
}
for(i=1;i<=10;i++)
{p=&r[i];printf("form
min
to
max
the
NO:
%d
value=%d\n",i,*p);}
getch();
}
起泡排序:需反復比較相鄰兩個數的比較與交換這兩種基本操作。對相鄰的兩個數進行比較時,如果反面的數大於(或小於)前面的數,將這兩個數進行交換,大的數(小的數)往前冒。
void
Sort(a,n)
/*排序*/
{
float
a[];
int
n;
{
int
i;
int
flag;
float
t;
do{
flag=0;
for(i=0;i<=n-2;i++)
if(a[i+1]>a[i])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
flag=1;
}
}while(flag);
}

熱點內容
航海世紀55區是什麼伺服器 發布:2025-02-02 02:01:22 瀏覽:831
php獲取當前年 發布:2025-02-02 01:50:41 瀏覽:156
sqlbrowser服務 發布:2025-02-02 01:32:14 瀏覽:730
jeecg源碼下載 發布:2025-02-02 01:08:47 瀏覽:365
多台電腦能共用一個伺服器嗎 發布:2025-02-02 01:08:44 瀏覽:26
oppo雲存儲空間怎麼清理 發布:2025-02-02 00:59:31 瀏覽:263
項目編譯啥意思 發布:2025-02-02 00:25:13 瀏覽:223
逐鹿中原怎樣做掛機腳本 發布:2025-02-02 00:23:39 瀏覽:28
安卓系統跟蹤在哪裡 發布:2025-02-02 00:23:38 瀏覽:899
安卓uc瀏覽器怎麼安裝油猴 發布:2025-02-02 00:23:38 瀏覽:299