實踐題目名稱: 找第k個小的數
問題描述:
設計乙個平均時間為o(n)的演算法,在n(1<=n<=1000)個無序的整數中找出第k小的數。
演算法描述:
就是先假設a[left]為這個分界值x,然後排序。比較x是不是第k個如果是,返回這個值。如果不是比較一下x和a[k]的大小,如果xa[k]遞迴在x的右邊找
演算法時間和空間複雜度的分析:最好情況是第一次直接進找到了,此情況下的時間複雜度位o(n);沒有新開陣列之類的,所以空間複雜度為0;
這兩次上機課我都做得不好,每次都寫的很慢。主要是對遞迴結束的條件不清楚,以及不知道結束時返回什麼值,所以一直寫不出。最後發現在分治法快速排序時遞迴結束的條件就是left>=right,然後返回的值為就是這個值本身。
演算法第二章上機實踐報告
7 1 最大子列和問題 20分 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資...
演算法第二章上機實踐報告
1,實踐題目名稱 最大子列和問題 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試...
演算法第二章上機實踐報告
1.實踐題目 7 2 改寫二分搜尋演算法 20 分 設a 0 n 1 是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。輸入有兩行 第一行是n值和x值 第二行是n個不相同的整數組成...