陣列排序,返回陣列值在原陣列中的下標(序號)
功能:對輸入的陣列進行排序,返回的是,從小到大陣列對應於原陣列的下標(序號) 。比如 1 7 3 2 9 返回:0 3 2 1 4
思想:在函式中動態開闢一個數組,用於儲存下標。初始化的時候為0-(n-1)。陣列值在排序的過程中,下標值也跟著排序。最後返回指向下標陣列的指標。
#include<stdio.h>
#include<malloc.h>
int *sortindex(int a[],int n)
{
int *p;
int temp;
p=(int*)malloc(sizeof(int)*n);
for(int i=0;i<n;i++)
p[i]=i;
for(i=0;i<n;i++)
for(int j=0;j<n;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
for(i=0;i<n;i++)
printf("%3d",p[i]);
printf("\n");
return p;
free(p);
}
void main()
{
int a[5]={1,7,3,2,9};
int *p;
for(int i=0;i<5;i++)
printf("%3d",a[i]);
printf("\n");
p=sortindex(a,5);
for(i=0;i<5;i++)
printf("%3d",p[i]);
printf("\n");
}
執行結果:
1 7 3 2 9
0 3 2 1 4
0 3 2 1 4
相關推薦
陣列排序,返回陣列值在原陣列中的下標(序號)
功能:對輸入的陣列進行排序,返回的是,從小到大陣列對應於原陣列的下標(序號) 。比如 1 7 3 2 9 返回:0 3 2 1 4 思想:在函式中動態開闢一個數組,用於儲存下標。初始化的時候為0-(n-1)。陣列值在排序的過程中,下標值也跟著排序。最後返回指向下標陣
陣列排序,返回陣列值在原陣列中的下標(序號) .
功能:對輸入的陣列進行排序,返回的是,從小到大陣列對應於原陣列的下標(序號) 。比如 1 7 3 2 9 返回:0 3 2 1 4 思想:在函式中動態開闢一個數組,用於儲存下標。初始化的時候為0-(n-1)。陣列值在排序的過程中,下標值也跟著排序。最後返回指向下標陣列的
4. 陣列int[] intArr = new int[]{5,9,3,7,2,6},寫出一個函式可根據傳參(引數為需要獲取的陣列型別:1:正序排序陣列;2:倒序排序陣列;)來進行排序,返回值為int
4. 陣列int[] intArr = new int[]{5,9,3,7,2,6},寫出一個函式可根據傳參(引數為需要獲取的陣列型別:1:正序排序陣列;2:倒序排序陣列;)來進行排序,返回值為int陣
陣列排序,並返回排序後的陣列對應原陣列的下標(c語言)
#include<stdio.h> #include<stdlib.h> void sort(int* a, int length, int* b) { int i,j, t1, t; for(j=0; j<length; j+
JAVA——陣列遍歷,排序,求最值
Java陣列中的常見操作 1,陣列遍歷 2,陣列求最值 3,陣列排序 (一)陣列遍歷 public class Array{ public static void main(String[] args){ //定義陣列 int[] arr = new int[]
演算法題004 -- [給定一個整數的陣列nums,返回相加為target的兩個數字的索引值] by java
題目 給定一個整數的陣列nums,返回相加為target的兩個數字的索引值。 假設每次輸入都只有一個答案,並且不會使用同一個元素兩次。 舉例: Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums
給定一個數組 nums 和一個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度
class Solution { public: int removeElement(vector<int>& nums, int val); }; int Solution
LeetCode-陣列移出元素與刪除重複項,返回操作後的陣列長度
移出元素 給定 nums = [3,2,2,3], val = 3, 函式應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。 你不需要考慮陣列中超出新長度後面的元素。 記得返回的是陣列的長度 class Solution { public: int removeEl
php統計一個一維陣列中,相同的值連續出現的最大次數
一維陣列: $array = [2,3,3,3,3,4,2,4,4,5,5,3,3,7,7,6,6,6,8,8,4,4,4,4,4,8,8,8,8,98,6,98,98]; 效果: Array ( [2] => 1 [3] => 4 [4] => 5 [5] =>
陣列排序,物件陣列排序
陣列排序,根據陣列中物件的某一個屬性進行排序 陣列排序 sortlen =[1,9,11,55,3,4] sortlen = sortlen.sort(function(x,y){ return y-x; //從大到小 }) console.log(sortl
定義一個數組,陣列初始長度由控制檯獲取 。隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍並輸出,清空陣列中所有元素且值繼承陣列長度,並重新進行手動新增元素,無限死迴圈直至輸出-0後結束程式。
package com.tedu; import java.util.Arrays; import java.util.Scanner; /** * 需求: * 定義一個初始陣列,陣列初始長度由控制檯獲取 * 隨後手動給陣列中每個元素賦值,陣列滿後將陣列長度擴充二倍輸
PHP將一個二維陣列,以其中一列為KEY,一列為VALUE,返回一個一維陣列
/** * 將一個二維陣列,以其中一列為KEY,一列為VALUE,返回一個一維陣列 * @param array $array * @param null $column_key * @param $index_key * @throws \Exception * @return a
JS 陣列按指定長度切割,返回一個新的陣列集合,比如按照3的倍數切割,返回結果為每三個一組
let data = [ {name:'小趙',value:'12'}, {name:'小錢',value:'12'}, {name:'小孫',value:'12'}, {name:'小李',value:'12'}, {name:'小周
php 更改陣列鍵名,同時不改變原陣列的排列順序
先感嘆一下,陣列函式真的是個好東西,它已經不止一次兩次幫助我解決問題了,先上此功能中需要掌握的幾個陣列函式。 array_keys(array,value,strict); array_keys() 函式返回包含陣列中所有鍵名的一個新陣列。 如果提供了第二個引數,則只返
翻轉子陣列,給陣列排序,最小翻轉次數
同學給我發的一個筆試題:給定1到n的一個子序列,每次只能翻轉裡面的一個子陣列,問最少需要幾次翻轉可以使得陣列升序排列?簡單概括就是:翻轉子陣列的方法給陣列排序;思路挺簡單的,隨便寫了一個,可以一起討論哈哈package com.baorant; import java.ut
js物件陣列排序,name字串排序,數字最前,然後英文,然後中文
/** * 將傳入的陣列根據當前系統語言,按照中文或英文名重新排序,會影響原陣列 * @param list 必填要排序的list * @returns {*} */ export function arraySortByName(list) { if (list === undefin
演算法題:對只含有0,1,2三個元素的陣列排序,時間複雜度O(n)
題目: 將元素均為0、1、2的陣列排序,時間複雜度O(n)。 思路: 方法1:通過三個下標遍歷一遍實現的方法。 p1從左側開始,指向第一個非1的數字;p3從右側開始,指向第一個非3的數字。 p2從p1開始遍歷,如果是2,p2繼續遍歷,直到p2遇到1或者3 如果遇到
在一個有序的旋轉陣列中,查詢給定值
思路一: 因為陣列有序,經過旋轉後,陣列保持區域性有序。因此可以用二分查詢。 bool search(int A[], int n, int target) { int start=0; int end=n-1; while(st
將陣列排序,陣列中所有的負整數出現在正整數前面(時間複雜度為 O(n), 空間複雜度為 O(1)).
<pre name="code" class="plain">#include <stdio.h> #define N 10 void swap (int *a, int i,
雙色球(陣列去重,陣列排序,Math物件)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <st