摘要:
程序代码: void BInsertionSort(Elem R[],int n) { for(i = 2;i <= n;i++) if(R[0] < R[i]) { R[0] = R[i]; low = 1; high = i-1; while(low <= high) { mid = (low+high)/2; if(R[0] < R[mid]) high = mid-1; else low =... 阅读全文
摘要:
程序代码: void InsertionSort(Elem R[],int n) { for(i = 2;i <= n;i++) if(R[i-1] > R[i]) { R[0] = R[i]; for(j = i-1;R[0] < R[j];j--) R[j+1] = R[j]; R[j+1] = R[0]; } }最好情况:记录有序,比较次数为n-1,移动次数为0;最差情况:记录逆序,比较次数2+3+---+n=(n+2)(n-1)/2,移动次数为(2+1)+(3+1)+---+(n+1)... 阅读全文
摘要:
思路:在二分比较中,如果遇到相等,则: (1).如果当前下标为0,或者key与pdic->element[mid-1].key不等,那么mid一定是key第一次出现的下标,返回mid即可; (2).如果(1)不成立,那么mid一定大于等于key第一次出现的下标,需要在low和mid-1之间继续进行搜索,找出key第一次出现的下标。时间复杂度:O(logn)。程序代码: int binarySearch(SeqDictinoary * pdic,KeyType key,int *position) { int low = 0,high = pdic->n-1,mid; whi... 阅读全文
摘要:
数据结构: struct BinTreeNode; typedef struct BinTreeNode * pBinTreeNode; struct BinTreeNode { KeyType key; //元素的关键码 DataType othre; //元素的属性 PBinTreeNode llink,rlink; }; //字典的存储 typedef struct BinTreeNode *BinTree; typedef BinTree * PBinTree; //字典的指针检索算法: int searchNode(... 阅读全文