1. 程式人生 > >陣列排序,返回陣列值在原陣列中的下標(序號)

陣列排序,返回陣列值在原陣列中的下標(序號)

 

功能:對輸入的陣列進行排序,返回的是,從小到大陣列對應於原陣列的下標(序號) 。比如 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

演算法題:對只含有012三個元素的陣列排序時間複雜度On

題目: 將元素均為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