1樓:匿名使用者
上面是核心**和乙個隨手寫的簡單測試,注意看數字15,左邊都比15小,右邊都比15大。
你的這個題目其實就是快速排序演算法的一部分,有興趣可以去看看快排的原理,我這個函式就是從之前寫的快排拿出來小改了一下的。
下面是完整的測試函式,隨手寫的,可能不太優雅:
#include
using namespace std;
void halfsort(int* v, int low, int high, int k)
while (v[i] <= v[mid] && j != i)
if (j != i) else }}
int main(void)
int k = 30;
printf("k = %d, arr[k] = %d\n", k, arr[k]);
halfsort(arr, 0, 44, k);
for (int i = 0; i < 45; ++i)
return 0;}
設有一元素為整數的線性表l=(a1,a2,a3,?,an),存放在一維陣列a[n]中,設計乙個演算法
2樓:匿名使用者
#include
#include
#include
#define n 20
int main()
printf("\n源表\n");
for(i=0;is[n-1])
{while(1)
{if(s[right_i]\n");
for(i=0;i
已知線性表l=(a1,a2,...,an)存放在一維陣列a[0..n-1]中,將線性表l就地逆置為l=(an,...,a2,a1),試寫出演算法.
3樓:匿名使用者
演算法比**還麻煩
step1:設一首指標一尾指標
setp2:交換收尾指標值
step3:首指標向後移一位,尾向前移一位 若首》=尾 退出 否則轉step2
for(i=0,j=n-1;i 4樓:沒節操的小秋 我的回答希望可以幫助到你. 對於線性表l=(a1,a2,a3,…ai,…,an),下列說法中正確的是( )。 (1分) a 5樓:一念生 a錯誤,第乙個元素再往前就沒有了其他元素了,所以沒有直接前驅;最後乙個元素再往後就沒有其他元素了,所以沒有直接後繼。 b錯誤,建立線性表時如果不申請節點記憶體,那這條連結串列上就乙個元素都沒有; c錯誤,連結串列中元素可以是1-2-3-4-5,也可以是5-4-6-2-3,沒有元素排序的限制 有乙個線性表(a1,a2,...,an),其中n>=2,採用帶頭結點的單鏈表儲存,頭指標為l,每個結點存放線性表中 6樓:水裡風 (1)線性表中的元素無序 pnode *p=l; while(p!=null) if(p->data==x)return p; else p=p->next; return null; (2)線性表中的元素按遞增有序 pnode *p=l; while(p!=null) if(p->data==x)return p; else if(p->data>x)return null; else p=p->next; return null; (3)線性表中的元素按遞減有序 pnode *p=l; while(p!=null) if(p->data==x)return p; else if(p->datanext; return null; 線性表l=(a1, a2, ..., an)用陣列表示,假定刪除表中任一元素的概率相同,則刪除乙個元素平均需要移動元素
5 7樓:匿名使用者 線性表l=(a1, a2, ..., an)用陣列表示,假定刪除表中任一元素的概率相同,則刪除一 回個元素平均需要移答動元素的_(n-1)/2__ 線性表l=(a1, a2, ..., an)用陣列表示,假定刪除表中任一元素的概率相同,則插入乙個元素平均需要移動元素的_n/2__ 8樓:匿名使用者 ((n-1)+(n-2)+....+1+0)/n=(n-1)/2 有乙個線性表(a1,a2,...,an),採用帶頭結點的單鏈表l儲存.設計一演算法將其就地逆置.............急急急 9樓:匿名使用者 #include "stdio.h" #include "string.h" #include "ctype.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h" #define ok 1 #define error 0 #define true 1 #define false 0 #define maxsize 20 /* 儲存空間初始分配量 */ typedef int status;/* status是函式的型別,其值是函式結果狀態**,如ok等 */typedef int elemtype;/* elemtype型別根據實際情況而定,這裡假設為int */ status visit(elemtype c) typedef struct node node; typedef struct node *linklist; /* 定義linklist */ /* 初始化順序線性表 */ status initlist(linklist *l) /* 初始條件:順序線性表l已存在。操作結果:若l為空表,則返回true,否則返回false */ status listempty(linklist l) /* 初始條件:順序線性表l已存在。操作結果:將l重置為空表 */ status clearlist(linklist *l) (*l)->next=null; /* 頭結點指標域為空 */ return ok; }/* 初始條件:順序線性表l已存在。操作結果:返回l中資料元素個數 */ int listlength(linklist l) return i; }/* 初始條件:順序線性表l已存在,1≤i≤listlength(l) */ /* 操作結果:用e返回l中第i個資料元素的值 */ status getelem(linklist l,int i,elemtype *e) if ( !p || j>i ) return error; /* 第i個元素不存在 */ *e = p->data; /* 取第i個元素的資料 */ return ok; }/* 初始條件:順序線性表l已存在 */ /* 操作結果:返回l中第1個與e滿足關係的資料元素的位序。 */ /* 若這樣的資料元素不存在,則返回值為0 */ int locateelem(linklist l,elemtype e) return 0;} /* 初始條件:順序線性表l已存在,1≤i≤listlength(l), */ /* 操作結果:在l中第i個位置之前插入新的資料元素e,l的長度加1 */ status listinsert(linklist *l,int i,elemtype e) if (!p || j > i) return error; /* 第i個元素不存在 */ s = (linklist)malloc(sizeof(node)); /* 生成新結點(c語言標準函式) */ s->data = e; s->next = p->next; /* 將p的後繼結點賦值給s的後繼 */ p->next = s; /* 將s賦值給p的後繼 */ return ok; }/* 初始條件:順序線性表l已存在,1≤i≤listlength(l) */ /* 操作結果:刪除l的第i個資料元素,並用e返回其值,l的長度減1 */ status listdelete(linklist *l,int i,elemtype *e) if (!(p->next) || j > i) return error; /* 第i個元素不存在 */ q = p->next; p->next = q->next; /* 將q的後繼賦值給p的後繼 */ *e = q->data; /* 將q結點中的資料給e */ free(q); /* 讓系統**此結點,釋放記憶體 */ return ok; }/* 初始條件:順序線性表l已存在 */ /* 操作結果:依次對l的每個資料元素輸出 */ status listtraverse(linklist l) printf("\n"); return ok; }/* 隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(頭插法) */ void createlisthead(linklist *l, int n) }/* 隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(尾插法) */ void createlisttail(linklist *l, int n) r->next = null; /* 表示當前連結串列結束 */ }int main() k=listlength(l); /* k為表長 */ for(j=k+1;j>=k;j--) printf("依次輸出l的元素:"); listtraverse(l); j=5; listdelete(&l,j,&e); /* 刪除第5個資料 */ printf("刪除第%d個的元素值為:%d\n",j,e); printf("依次輸出l的元素:"); listtraverse(l); i=clearlist(&l); printf("\n清空l後 createlisthead(&l,20); printf("整體建立l的元素(頭插法):"); listtraverse(l); i=clearlist(&l); printf("\n刪除l後 createlisttail(&l,20); printf("整體建立l的元素(尾插法):"); listtraverse(l); return 0;} 10樓:等你愛你惜你 #include #include typedef int elemtype; typedef struct node lnode,* linklist; linklist initlist(linklist l);//申請節點空間 linklist input(linklist l);//用於輸入資料 void prinlink(linklist l);//輸出資料void reverse(linklist l);//逆置連結串列main() linklist initlist(linklist l)//申請節點空間 linklist input(linklist l)//輸入資料return l;//返回連結串列 }void prinlink(linklist l)//列印連結串列}void reverse(linklist l)//逆置連結串列} d。二維陣列中的元素是通過使用下標 即陣列的行索引和列索引 來訪問的。例如 a 2 3 將獲取陣列中第 3 行第 4 個元素。a i j 將獲取陣列中第 i 1 行第 j 1個元素,即陣列中第i m j 1個數。你隨便拿兩個數試試不就知道答案了,比如a 0 0 a 0 1 答案明顯是d啊,考試做題也... 我想你說的可能是 bai超星神系列du 特攝裡的第一部 zhi超星神格蘭賽dao 裡搜尋 超星神權 就能看到介紹了。一共是十二個星座對應的十二戰士,分為火系 水系 土系 風系,每個系各三個戰士,各能召喚出乙個機械人。超新神格蘭賽沙!小時候看過的乙個日本特攝片 就是說有好多人可以變身還可以召喚機械人 ... 解 顯然a 1符合題意,當a 1時,關於x的方程 a 1 x方 2x a 1 0是一元二次方程 其判別式 4 4 a 1 a 1 4a 2 0,方程 a 1 x方 2x a 1 0總有實根,設兩實根為x1 x2,則 x1 x2 2 1 a 當x1 x2都是整數時,1 a是2的非零約數,所以1 a的值...若二維陣列a有m列,則計算任一元素a在陣列中位置
一部日本的特攝片是要同一元素變身的人能召喚出機械人
一元二次方程整數解問題