C語言之數組
來源:程序員人生 發布時間:2015-01-08 13:09:24 閱讀次數:3056次
1,數組簡介:
所謂數組,就是相同數據類型的元素按1定順序排列的集合,就是把有限個類型相同的變量用1個名字命名,然后用編號辨別他們的變量的集合,這個名字稱為數組名,編號稱為下標。組成數組的各個變量稱為數組的份量,也稱為數組的元素,有時也稱為下標變量。數組是在程序設計中,為了處理方便, 把具有相同類型的若干變量按有序的情勢組織起來的1種情勢。這些按序排列的同類數據元素的集合稱為數組。2,例子要求:針對數組這個最基礎的數據結構,羅列這個數據結構可以支持的操作,并以大O的方式分析各個操作的時間復雜度3,實現進程:#include <QCoreApplication>//數組的基本操作,排序,取最大值,模糊查詢某個值// 【1】數組排序 算法// 1.1, 冒泡排序 O(n2)最好的是數組有序情況下為:O(2N),平均是正常隨機亂序為:O(2N),最差的是數據完全亂序O(n2)。void BubbleSort(int A[], int N){ int tmp; for (i = 0; i < N - 1; ++i) { for (j = 1; j < N - i; ++j) { if (A[j] > A[j - 1]) //從大到小排序,把較小的交換到后面來 { tmp = A[j - 1]; A[j - 1] = A[j]; A[j] = tmp; } } }}// 1.2 快速排序,它的平均時間復雜度為O(Nlog2N)最好的是數組有序情況下時間復雜度為:O(nlogn),平均是正常隨機亂序時平均時間復雜度為:O(nlogn)。 ,最差的是數據完全亂序O(n^2)。int Partition(int *arr, int low, int high){ int pivot = arr[low]; while(low < high) { while(low < high && arr[high] <= pivot) high--; arr[low] = arr[high]; while(low < high && arr[low] >= pivot) low++; arr[high] = arr[low]; } arr[low] = pivot; return low;}void Qsort(int *arr, int low, int high){ if (low < high) { int mid = Partition(arr, low, high); Qsort(arr, low, mid - 1); Qsort(arr, mid + 1, high); }}// 【2】 數組取最大值 算法最好情況下,最大值在第1個,時間復雜度為:O(n^2)平均是,最大值在中間位置,時間復雜度:O(n).最差是,最大值在末尾,時間復雜度:O(2^n)int max(int array[],int n);void main( ){ int num[N],count,i,val;? scanf("%d",&count); for (i=0;i<count;i++) { scanf("%d",&num[i]); } val=max(num,count); printf("%dn",val); }int max(int array[ ],int n){ if (n<=1) return(array[0]); // 就1個數,最大值就是自已 int t=max(array+1,n⑴); // 求后面 n⑴個數的最大值 if (t>array[0]) // t 比第1個大,返回最大 t return(t); else return(array[0]); // t小,返回array[0];}// 【3】 數組查詢是不是包括某個值最好情況下,就是第1個,時間復雜度為O(1);平均情況下,值在中間,時間復雜度為0(N/2);最壞情況下,值在末尾或不存在,時間復雜度為O(N);int main(){ int n,m,i,a[20]; int find; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&a[i]); } scanf("%d",&m); find = ⑴; for(i=0;i<n;i++){ if(a[i] == m){ find = i; break; } } if(find < 0) { printf("Non"); } else { printf("%dn", find); } return 0;}// 【4】數組輸入輸出,1時沒有想到用甚么算法,順序遍歷?
----------------------------------------------------------------------------------------------------------------
<版權所有,文章允許轉載,但必須以鏈接方式注明源地址,否則追究法律責任!>
原博客地址: http://blog.itpub.net/26230597/viewspace⑴386607/
原作者:黃杉 (mchdba)
----------------------------------------------------------------------------------------------------------------
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------